Последовательность написания файла в C # - PullRequest
0 голосов
/ 23 марта 2011
System.IO.BinaryWriter outfile;

System.IO.FileStream fs = new System.IO.FileStream(some_object.text, System.IO.FileMode.Create);

outfile = new System.IO.BinaryWriter(fs);

outfile.Write('A');  // Line 1
outfile.Write('B');  // Line 2
outfile.Write('C');  // Line 3
outfile.Write( Convert.ToUInt16(some_object.text, 16) );   // Line 4
outfile.Write((ushort)0);  // Line 5

Здесь я объявляю BinaryWriter для создания моего выходного файла. То, что мне нужно четко знать, как именно файл записывается? Это означает, что в строке 1, 2, 3 записывается файл Byte by Byte, означающий 1 байт за раз, если я прав ?? 100 *

Это some_object.text содержит значение 2000.

Сколько байтов Line 4 точно записывает ?? (2 байта / 16 битов, поскольку UInt16 равен 16 битам)?

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Посмотрите на таблицу из MSDN, чтобы увидеть, сколько записано байтов:

BinaryWriter.Write Метод

1 голос
/ 23 марта 2011

BinaryWriter использует класс BitConverter для создания последовательностей байтов, которые записываются в базовый поток.Отличный способ понять, что происходит на самом низком уровне, - это использовать .NET Reflector.Он может декомпилировать сборки и легко использоваться для выяснения деталей реализации платформы.

Большинство методов двоичной записи используют собственное представление с прямым порядком байтов (хотя этот порядок байтов зависит от архитектуры и варьируется в зависимости от платформы, например XBOX и Windows).Единственным исключением являются строки.По умолчанию строки кодируются с использованием кодировки UTF-8.

...