2009-10-08 7 views
10

Ich verwende BinaryWriter-Klasse, um eine Binärdatei auf die Festplatte zu schreiben. Wenn ich die Write-Methode durch Übergeben eines vorzeichenlosen Kurzwerts aufruft, schreibt sie es im Little-Endian-Format. Beispiel:BinaryWriter Endian-Problem

schreibt den Wert in der Binärdatei als 0x00 0xA0. Gibt es eine Möglichkeit, dass BInaryWriter Big Endian verwendet? Wenn nicht, ist es möglich, eine neue Klasse zu erstellen, die BinaryWriter erbt und die Write-Funktion überlädt, um Big Endian zu schreiben?

Antwort

23

Sie können meine EndianBinaryWriter in MiscUtil verwenden. Damit können Sie die gewünschte Endianz angeben. Es gibt auch EndianBinaryReader und EndianBitConverter.

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

Es ergibt sich nicht given in a blog post aus Gründen von BinaryWriter.

+0

Sieht aus wie genau das, was ich brauche (obwohl mein Projekt ist .NET 2.0). Ich werde es ausprobieren! Vielen Dank! – Icemanind

+1

Es gibt eine .NET 2.0-Version von MiscUtil, die Sie herunterladen können - es sollte in Ordnung sein. –

+0

@JonSkeet: Ich weiß, dieser Beitrag ist 5 Jahre alt, aber Ihr Blog-Post-Link ist tot:/ –

Verwandte Themen