2009-10-08 2 views
10

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

bw.Write(0xA000); 

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

ответ

23

Вы можете использовать мой EndianBinaryWriter в MiscUtil. Это позволяет указать желаемую контенту. Также есть EndianBinaryReader и EndianBitConverter.

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

Это не вытекает из BinaryWriter, по причинам given in a blog post.

+0

Похоже, именно то, что мне нужно (хотя мой проект .NET 2.0). Я это попробую! Благодаря! – Icemanind

+1

Есть версия .NET 2.0 для MiscUtil, которую вы можете скачать - все должно быть хорошо. –

+0

@JonSkeet: Я знаю, что этому сообщению 5 лет, но ваша ссылка в блоге мертва:/ –

Смежные вопросы