Преобразование byte[] -> string -> byte[]
Подскажите если не сложно.
Есть код:
string txt = "Hello World!!!+=_^%kl;sdfkljdfklgjdklff';kldfjg23459037652*(*^^&$%^#(";
byte[] data2 = Encoding.UTF8.GetBytes(txt);
string data = Encoding.UTF8.GetString(data2);
byte[] data3 = Encoding.UTF8.GetBytes(data);
Console.WriteLine(data2 == data3); // False
В итоге интересует преобразование byte[] -> string -> byte[], при отсутствии изменений ожидаемое поведение data2 = data3, а в моем коде получается что это не так. Как я понимаю при преобразовании что-то теряется, но как этого избежать?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Массивы по содержимому можно сравнить так, с помощью Linq.
Console.WriteLine(data2.SequenceEqual(data3));
Либо написать свой метод сравнения с использованием цикла.
Через == сравниваются только ссылки на экземпляры массивов, а так как экземпляры разные, выводится False. Содержимое при этом никак не учитывается. Другими словами, для массивов == вернет true только если массив сравнивается сам с собой.
byte[] array4 = array3;
Console.WriteLine(array3 == array4); // True