Как вы читаете двоичные данные в C # .NET, а затем конвертировать их в строку? - PullRequest
4 голосов
/ 28 марта 2011

В отличие от использования StreamReader/Filestream Я хочу прочитать двоичные данные из файлов и показать эти данные (отформатированные) в текстовом поле.

Ответы [ 3 ]

7 голосов
/ 28 марта 2011

То есть двоичные данные, как в потенциально непечатаемых данных?Если вы хотите распечатать данные в виде шестнадцатеричной строки, возьмите данные в виде массива байтов, а затем преобразуйте в шестнадцатеричное представление.

string path = @"path\to\my\file";
byte[] data = File.ReadAllBytes(path);
string dataString = String.Concat(data.Select(b => b.ToString("x2")));
textBox.Text = dataString;
4 голосов
/ 28 марта 2011

Существуют разные случаи, когда нужно прочитать двоичный файл, так как неясно, чего вы на самом деле пытаетесь достичь, вот некоторые:

  • чтение случайного файла и отображение в виде последовательности шестнадцатеричных значений (аналогично просмотру двоичных файлов в Visual Studio или любом другом просмотрщике двоичных файлов). Ядовито покрыто ответом Джеффа М.
  • Чтение и запись ваших собственных объектов с использованием двоичной сериализации. Проверьте пошаговое руководство по сериализации в MSDN - http://msdn.microsoft.com/en-us/library/et91as27.aspx и прочитайте объекты BinaryFormatter.
  • Чтение кого-либо другого в двоичном формате (например, JPEG, PNG, ZIP, PDF). В этом случае вам нужно знать структуру файла (вы часто можете найти документацию по формату файла) и использовать BinaryReader для чтения отдельных фрагментов файла. Для большинства распространенных форматов файлов легко найти существующие библиотеки, которые позволяют читать такие файлы более удобным способом. В статье MSDN о BinaryReader также есть базовый пример использования: http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx.
3 голосов
/ 28 марта 2011

Используйте BinaryReader для чтения файла. Затем закодируйте байтовый массив, который читает из файла в формате base64, и назначьте закодированную строку base64 в текстовое поле

UPDATE:

Массив байтов, считываемый из файла, может быть закодирован в различной кодировке текста перед назначением текстового поля для отображения. Взгляните на следующие пространства имен в классе .net, связанные с форматом кодировки символов:

  • System.Text.ASCIIEncoding
  • System.Text.UTF8Encoding
  • System.Text.UnicodeEncoding
  • System.Text.UTF32Encoding
  • System.Text.UTF7Encoding

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

ОБНОВЛЕНИЕ (2):

Обратите внимание, что вы не можете преобразовать нетекстовый файл (например, файл изображения, музыкальный файл), используя любой класс System.Text. В противном случае для вас это не имеет смысла отображать в текстовом поле.

...