Итак, вот сделка: я пытаюсь открыть файл (из байтов), преобразовать его в строку, чтобы я мог общаться с некоторыми метаданными в заголовке, преобразовывать его обратно в байты и сохранять его. Проблема, с которой я столкнулся сейчас, - это этот код. Когда я сравниваю строку, которая была преобразована обратно и вперед (но не изменена иным образом) в исходный массив байтов, она неравнозначна. Как я могу сделать эту работу?
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;
}
Вот как я их сравниваю.
byte[] fileData = GetBinaryData(filesindir[0], Convert.ToInt32(fi.Length));
string fileDataString = ByteArrayToString(fileData);
byte[] recapturedBytes = StringToByteArray(fileDataString);
Response.Write((fileData == recapturedBytes));
Я уверен, что это UTF-8, используя:
StreamReader sr = new StreamReader(filesindir[0]);
Response.Write(sr.CurrentEncoding);
который возвращает "System.Text.UTF8Encoding".