c# - examples - gawk




Convertir la cadena a la matriz de bytes en C# (6)

Soy bastante nuevo en C #. Estoy convirtiendo algo de VB en C #. Tener un problema con la sintaxis de esta declaración:

if ((searchResult.Properties["user"].Count > 0))
{
    profile.User = System.Text.Encoding.UTF8.GetString(searchResult.Properties["user"][0]);
}

Entonces veo los siguientes errores:

Argumento 1: no se puede convertir de 'objeto' a 'byte []'

La mejor coincidencia de método sobrecargada para 'System.Text.Encoding.GetString (byte [])' tiene algunos argumentos no válidos

Traté de corregir el código basado en this publicación, pero aún no tengo éxito

string User = Encoding.UTF8.GetString("user", 0);

¿Alguna sugerencia?


¿Alguien ve alguna razón para no hacer esto?

mystring.Select(Convert.ToByte).ToArray()

El siguiente enfoque funcionará solo si los caracteres son 1 byte. (Unicode predeterminado no funcionará ya que es de 2 bytes)

public static byte[] ToByteArray(string value)
{            
    char[] charArr = value.ToCharArray();
    byte[] bytes = new byte[charArr.Length];
    for (int i = 0; i < charArr.Length; i++)
    {
        byte current = Convert.ToByte(charArr[i]);
        bytes[i] = current;
    }

    return bytes;
}

Manteniéndolo simple


Si ya tiene una matriz de bytes, necesitará saber qué tipo de codificación se utilizó para convertirla en esa matriz de bytes.

Por ejemplo, si la matriz de bytes fue creada así:

byte[] bytes = Encoding.ASCII.GetBytes(someString);

Deberás volver a convertirlo en una cadena como esta:

string someString = Encoding.ASCII.GetString(bytes);

Si puede encontrar en el código que heredó, la codificación utilizada para crear la matriz de bytes debería estar configurada.


También puede usar un Método de extensión para agregar un método al tipo de string como se muestra a continuación:

static class Helper
{
   public static byte[] ToByteArray(this string str)
   {
      return System.Text.Encoding.ASCII.GetBytes(str);
   }
}

Y utilízalo como a continuación:

string foo = "bla bla";
byte[] result = foo.ToByteArray();

utilizar esta

byte[] myByte= System.Text.ASCIIEncoding.Default.GetBytes(myString);

static byte[] GetBytes(string str)
{
     byte[] bytes = new byte[str.Length * sizeof(char)];
     System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
     return bytes;
}

static string GetString(byte[] bytes)
{
     char[] chars = new char[bytes.Length / sizeof(char)];
     System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
     return new string(chars);
}






byte