Как читать двоичный файл в C #?

Я хочу сделать метод, который принимает любой файл и читает его как массив из 0 и 1, т. Е. Его двоичный код. Я хочу сохранить этот двоичный код в виде текстового файла. Вы можете мне помочь? Благодарю.

Быстрая и грязная версия:

byte[] fileBytes = File.ReadAllBytes(inputFilename); StringBuilder sb = new StringBuilder(); foreach(byte b in fileBytes) { sb.Append(Convert.ToString(b, 2).PadLeft(8, '0')); } File.WriteAllText(outputFilename, sb.ToString()); 

Ну, читать это не сложно, просто используйте FileStream для чтения байта []. Преобразование его в текст на самом деле не является вообще возможным или значимым, если вы не преобразуете 1 и 0 в шестнадцатеричный. Это легко сделать с перегрузкой BitConverter.ToString (byte []). Обычно вы хотите сбросить 16 или 32 байта в каждой строке. Вы можете использовать Encoding.ASCII.GetString (), чтобы попытаться преобразовать байты в символы. Пример программы, которая делает это:

 using System; using System.IO; using System.Text; class Program { static void Main(string[] args) { // Read the file into  var fs = new FileStream(@"c:\temp\test.bin", FileMode.Open); var len = (int)fs.Length; var bits = new byte[len]; fs.Read(bits, 0, len); // Dump 16 bytes per line for (int ix = 0; ix < len; ix += 16) { var cnt = Math.Min(16, len - ix); var line = new byte[cnt]; Array.Copy(bits, ix, line, 0, cnt); // Write address + hex + ascii Console.Write("{0:X6} ", ix); Console.Write(BitConverter.ToString(line)); Console.Write(" "); // Convert non-ascii characters to . for (int jx = 0; jx < cnt; ++jx) if (line[jx] < 0x20 || line[jx] > 0x7f) line[jx] = (byte)'.'; Console.WriteLine(Encoding.ASCII.GetString(line)); } Console.ReadLine(); } } 

Вы можете использовать BinaryReader для чтения каждого из байтов, а затем использовать BitConverter.ToString (byte []), чтобы узнать, как каждый из них представлен в двоичном формате.

Затем вы можете использовать это представление и записать его в файл.

Используйте простой FileStream.Read затем распечатайте его с помощью Convert.ToString(b, 2)

 using (FileStream fs = File.OpenRead(binarySourceFile.Path)) using (BinaryReader reader = new BinaryReader(fs)) { // Read in all pairs. while (reader.BaseStream.Position != reader.BaseStream.Length) { Item item = new Item(); item.UniqueId = reader.ReadString(); item.StringUnique = reader.ReadString(); result.Add(item); } } return result; 
  • Java: Синтаксис и смысл за «[B @ 1ef9157»? Binary / адрес?
  • Быстрая версия функции dec2bin для преобразования многих элементов?
  • Преобразование строки из 1s и 0s в двоичное значение
  • Бинарные литералы C #
  • Включить двоичный файл с помощью скрипта GNU ld linker
  • Количество отсчетов 1 в двоичном представлении
  • Являются ли операторы сдвига (<>) арифметическими или логическими в C?
  • Захват двоичного вывода из Process.StandardOutput
  • Преобразование длинной строки двоичного кода в hex c #
  • Как подсчитать количество заданных битов в 32-битовом целое?
  • Как печатать (используя cout) способ хранения числа в памяти?
  • Давайте будем гением компьютера.