2009-10-08 15 views
10

Estoy utilizando la clase BinaryWriter para escribir un archivo binario en el disco. Cuando invoco el método Write, pasando un valor corto unsigned, lo escribe en formato little-endian. Por ejemplo:BinaryWriter Endian problema

bw.Write(0xA000); 

escribe el valor en el archivo binario como 0x00 0xA0. ¿Hay alguna manera de hacer que BInaryWriter use Big Endian? Si no, ¿es posible crear una nueva clase, heredar BinaryWriter y sobrecargar la función Write para que escriba big endian?

Respuesta

23

Puedes usar mi EndianBinaryWriter en MiscUtil. Eso le permite especificar el endianness que desea. También hay EndianBinaryReader y EndianBitConverter.

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

No deriva de BinaryWriter, por razones given in a blog post.

+0

parece exactamente lo que necesito (aunque mi proyecto es .NET 2.0). ¡Lo intentaré! ¡Gracias! – Icemanind

+1

Hay una versión .NET 2.0 de MiscUtil que puede descargar, debería estar bien. –

+0

@JonSkeet: Sé que esta publicación tiene 5 años, pero el enlace de tu blog está muerto:/ –

Cuestiones relacionadas