Saltar al contenido

Conversión de Stream a String y viceversa … ¿qué nos estamos perdiendo?

Solución:

Acabo de probar esto y funciona bien.

string test = "Testing 1-2-3";

// convert string to stream
byte[] byteArray = Encoding.ASCII.GetBytes(test);
MemoryStream stream = new MemoryStream(byteArray);

// convert stream to string
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();

Si stream ya se ha escrito, es posible que desee buscar el principio antes de leer el texto: stream.Seek(0, SeekOrigin.Begin);

Esto es tan común pero profundamente incorrecto. Los datos de Protobuf no son datos de cadena. Ciertamente no es ASCII. Estás usando la codificación hacia atrás. Una codificación de texto transfiere:

  • una cadena arbitraria a bytes formateados
  • bytes formateados a la cadena original

No tiene “bytes formateados”. Tú tienes bytes arbitrarios. Necesita usar algo como una codificación base-n (comúnmente: base-64). Esto transfiere

  • bytes arbitrarios a una cadena formateada
  • una cadena formateada a los bytes originales

mire Convert.ToBase64String y Convert. FromBase64String

una conversión de UTF8 MemoryStream a String:

var res = Encoding.UTF8.GetString(stream.GetBuffer(), 0 , (int)stream.Length)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *