Проблема с двоичными числами в BinaryWriter - PullRequest
10 голосов
/ 09 октября 2009

Я использую класс BinaryWriter для записи двоичного файла на диск. Когда я вызываю метод Write, передавая беззнаковое короткое значение, он записывает его в формате с прямым порядком байтов. Например:

bw.Write(0xA000);

записывает значение в двоичном файле как 0x00 0xA0. Есть ли способ заставить BInaryWriter использовать Big Endian? Если нет, то возможно ли создать новый класс, унаследованный от BinaryWriter, и перегрузить функцию Write, чтобы заставить его писать с прямым порядком байтов?

Ответы [ 2 ]

23 голосов
/ 09 октября 2009

Вы можете использовать мой EndianBinaryWriter в MiscUtil . Это позволяет вам указать порядок байтов, который вы хотите. Там также EndianBinaryReader и EndianBitConverter.

EndianBinaryWriter writer = new EndianBinaryWriter(EndianBitConverter.Big,
                                                   stream);
writer.Write(...);

Это не происходит от BinaryWriter, по причинам, указанным в сообщении в блоге .

3 голосов
/ 09 октября 2009

в соответствии с Microsoft Connect, в настоящее время не поддерживается: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149

...