Вы не должны использовать Encoding.GetString
для преобразования произвольных двоичных данных в строку. Этот метод предназначен только для текста, который был закодирован для двоичных данных с использованием определенной кодировки.
Вместо этого вы хотите использовать текстовое представление, которое может представлять произвольные двоичные данные обратимо. Два наиболее распространенных способа сделать это base64 и hex. Base64 является самым простым в .NET:
string base64 = Convert.ToBase64String(originalBytes);
...
byte[] recoveredBytes = Convert.FromBase64String(base64);
Несколько предостережений к этому:
- Если вы хотите использовать эту строку в качестве параметра URL, вы должны использовать веб-безопасная версия base64; Я не знаю о прямой поддержке этого в .NET, но вы, вероятно, можете найти решения достаточно легко
- Вы должны делать это вообще , если вам действительно нужны данные в строковый формат. Если вы просто пытаетесь записать его в файл или аналогичный, проще всего хранить его как двоичные данные
- Base64 не очень читабельна для человека; используйте hex, если вы хотите, чтобы люди могли читать данные в текстовой форме без дополнительной оснастки. (Существуют различные вопросы, касающиеся преобразования двоичных данных в шестнадцатеричные и обратно.)
задан Shakthi 11 March 2019 в 20:09
поделиться