2009-10-08 16 views
10

Sto usando la classe BinaryWriter per scrivere un file binario su disco. Quando invoco il metodo Write, passando un valore short senza segno, lo scrive in formato little-endian. Ad esempio:BinaryWriter Endian issue

bw.Write(0xA000); 

scrive il valore nel file binario come 0x00 0xA0. C'è un modo per far sì che BInaryWriter usi Big Endian? In caso contrario, è possibile creare una nuova classe, ereditando BinaryWriter e sovraccaricando la funzione Write per farla scrivere big endian?

risposta

23

È possibile utilizzare il mio EndianBinaryWriter in MiscUtil. Ciò ti consente di specificare l'endianità che desideri. C'è anche EndianBinaryReader e EndianBitConverter.

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

Essa non deriva da BinaryWriter, per motivi given in a blog post.

+0

sembra esattamente quello che mi serve (anche se il mio progetto è NET 2.0). Lo proverò! Grazie! – Icemanind

+1

C'è una versione .NET 2.0 di MiscUtil che puoi scaricare - dovrebbe andare bene. –

+0

@JonSkeet: So che questo post ha 5 anni, ma il tuo post sul blog è morto:/ –

Problemi correlati