Así que este es el trato: estoy tratando de abrir un archivo (desde bytes), convertirlo en una cadena para que pueda meter algunos metadatos en el encabezado, convertirlo de nuevo a bytes, y guardarlo. El problema con el que me estoy metiendo ahora es con este código. Cuando comparo la secuencia que ha sido convertida de ida y vuelta (pero no modificada) a la matriz de bytes original, es desigual. ¿Cómo puedo hacer que esto funcione?Convirtiendo matriz de bytes a cadena y viceversa en C#
public static byte[] StringToByteArray(string str)
{
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(str);
}
public string ByteArrayToString(byte[] input)
{
UTF8Encoding enc = new UTF8Encoding();
string str = enc.GetString(input);
return str;
}
Así es como los estoy comparando.
byte[] fileData = GetBinaryData(filesindir[0], Convert.ToInt32(fi.Length));
string fileDataString = ByteArrayToString(fileData);
byte[] recapturedBytes = StringToByteArray(fileDataString);
Response.Write((fileData == recapturedBytes));
estoy seguro de que es UTF-8, usando:
StreamReader sr = new StreamReader(filesindir[0]);
Response.Write(sr.CurrentEncoding);
que devuelve "System.Text.UTF8Encoding".
¿está seguro de que es su UTF-8 para empezar? –
No estoy seguro. ¿Cómo podría decir si es o no? –
¿Qué quieres decir con que es desigual? ¿Tu cuerda es desigual? no obtienes el mismo resultado de cadena? – Khan