Самый простой способ - использовать Convert.ToBase64String
метод для преобразования байтового массива в строку и Convert.FromBase64String
для наоборот, например
var salt = new byte[] { 1, 2, 4, 8, 16, 32, 64, 128, 255 };
var s = Convert.ToBase64String(salt);
var b = Convert.FromBase64String(s);
в этом примере s
переменная содержит значение AQIECBAgQID/
, b
содержит байтовый массив { 1, 2, 4, 8, 16, 32, 64, 128, 255 }
, поэтому ничего не было потеряно.
Да, длина строки s
и длина массива salt
отличаются. Это связано с тем, что здесь используется BASE64
(он имеет алфавит из 64 символов, хотя byte
может содержать 256 различных значений).
Но если вы хотите преобразовать свой байтовый массив в шестнадцатеричную строку и наоборот, вам может пригодиться этот вопрос: Как преобразовать байтовый массив в шестнадцатеричную строку и наоборот в C #? .