2012-03-22 21 views

Respuesta

14

Puede utilizar una de las clases Encoding; sin embargo, necesitará saber en qué codificación están estos bytes.

string val = Encoding.UTF8.GetString(myByteArray); 

Los valores que ha mostradas mirada como una codificación Unicode, por lo UTF8 o Unicode mirada como buenas apuestas.

+0

muchas gracias! jaja funcionó. –

+3

@IanLundberg: Tenga en cuenta que si utiliza 'Encoding.UTF8' obtendrá una cadena que es el doble de lo que debería ser para sus datos de entrada. En algunos formularios de salida no puede * ver * eso, pero cualquier otro personaje será U + 0000. –

+0

oh bien, no me di cuenta de eso –

4

Parece que eso es poco-endian UTF-16, por lo que desea Encoding.Unicode:

string text = Encoding.Unicode.GetString(bytes); 

Normalmente no debería asumir lo que la codificación es sin embargo - que debe ser algo que usted sabe acerca de los datos . Para otras codificaciones, obviamente usaría diferentes instancias Encoding, pero Encoding es la clase correcta para representaciones binarias de texto.

EDIT: Como se señaló en los comentarios, parece que falta un "00" ya sea desde el principio de la matriz de bytes (en cuyo caso se necesita Encoding.BigEndianUnicode) o desde el final (en cuyo caso simplemente Encoding.Unicode está bien).

(Cuando se trata de la otra forma, sin embargo, tomando datos binarios arbitrarios y representándolo como texto, debe usar hexadecimal o base64. Ese no es el caso aquí, pero debe tenerlo en cuenta)

Cuestiones relacionadas