Преобразование двоичного файла в строку и наоборот - PullRequest
3 голосов
/ 10 августа 2010

Я создал веб-сервис, который возвращает (двоичный) файл. К сожалению, я не могу использовать byte [], поэтому мне нужно преобразовать байтовый массив в строку. На данный момент я делаю следующее (но это не работает):

Конвертировать файл в строку:

byte[] arr = File.ReadAllBytes(fileName);
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();  
string fileAsString = enc.GetString(arr);  

Чтобы проверить, работает ли это правильно, я конвертирую его обратно через:

System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
byte[] file = enc.GetBytes(fileAsString);

Но в конце исходный байтовый массив и байтовый массив, созданные из строки, не равны. Нужно ли использовать другой метод для чтения файла в байтовый массив?

1 Ответ

8 голосов
/ 10 августа 2010

Используйте Convert.ToBase64String, чтобы преобразовать его в текст, и Convert.FromBase64String, чтобы преобразовать обратно.

Encoding используется для преобразования из текста в двоичное представление и из двоичного представления текста обратно в текст. В этом случае у вас нет двоичного представления текста - у вас просто есть произвольные двоичные данные ... поэтому Encoding неуместно. Даже если вы используете кодировку, которая может «сортировать» любые двоичные данные (например, ISO Latin 1), вы обнаружите, что многие способы передачи текста потерпят неудачу, если у вас есть управляющие символы и т. Д.

Кодировка Base64 даст вам текст, который является просто ASCII и намного проще в обработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...