c# - bytes - Problema de BinaryWriter Endian
byte[] to int (2)
Estoy usando 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:
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?
según microsoft connect, actualmente no es compatible: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=484149
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 se deriva de BinaryWriter
, por razones dadas en una publicación de blog .