2009-10-08 9 views
10

Używam klasy BinaryWriter do zapisu pliku binarnego na dysk. Kiedy wywołuję metodę Write, przekazując niepodpisaną krótką wartość, zapisuje ją w formacie little-endian. Na przykład:BinaryWriter Endian issue

bw.Write(0xA000); 

zapisuje wartość w pliku binarnym jako 0x00 0xA0. Czy istnieje sposób, aby BInaryWriter używał Big Endian? Jeśli nie, czy jest możliwe utworzenie nowej klasy, dziedziczenie BinaryWriter i przeciążenie funkcji Write, aby napisać big endian?

Odpowiedz

23

Możesz użyć mojego EndianBinaryWriter w MiscUtil. To pozwala określić żądaną endianię. Istnieje również EndianBinaryReader i EndianBitConverter.

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

To nie wynika z BinaryWriter powodów given in a blog post.

+0

Wygląda dokładnie to, czego potrzebuję (choć mój projekt jest .NET 2.0). Wypróbuję to! Dzięki! – Icemanind

+1

Istnieje wersja MiscUtil .NET 2.0, którą można pobrać - powinno być dobrze. –

+0

@JonSkeet: Wiem, że ten wpis ma 5 lat, ale link do wpisu na blogu jest martwy:/ –