2010-11-30 18 views
5

Duplicar posible:
.NET String to byte Array C#Cadena a byte [] y viceversa?

¿Cómo se convierte una cadena de byte [matriz], y viceversa? Necesito cadenas para almacenar en algún almacenamiento binario. Por favor, muestre un ejemplo en ambas direcciones. Y una cosa más: cada cadena puede ser más grande que 90 Kb.

+3

Esa pregunta tiene una respuesta aceptada algo engañoso, en función del comportamiento de la salida de tiempo de ejecución de serialización, lo que ciertamente no es multi-lenguaje-compatibles. Por lo tanto, no voy a votar para cerrar como un duplicado. Usar una codificación adecuada, como UTF-8, es un enfoque mucho mejor. – cdhowie

+2

@cdhowie: de acuerdo. "Más bien engañoso" es una forma educada de expresarlo. :) – MusiGenesis

+0

Gracias a todos por las respuestas !;) – Edward83

Respuesta

18

Si desea utilizar codificación UTF-8:

// string to byte[] 
byte[] bytes = Encoding.UTF8.GetBytes(someString); 

// byte[] to string 
string anotherString = Encoding.UTF8.GetString(bytes); 
8

Antes de marchar fuera y utiliza uno de los ejemplos alguien ya ha dado debe tener en cuenta que no es, en general, sin mapeo único entre una cadena y una secuencia de bytes. Como la cadena se asigna a binario (y viceversa) se determina por el encoding que utilice. Joel Spolsky escribió un awesome article sobre este tema.

En la decodificación binaria para obtener una cadena, es necesario utilizar la misma codificación que se utilizó para producir el binario, en primer lugar, de lo contrario se encontrará con problemas.

Cuestiones relacionadas