默认情况下,BinaryWriter类使用左侧的低位写入int值(例如,(int)6在十六进制编辑器中查看结果文件时变为06 00 00 00)。我需要右侧的低位(例如,00 00 00 06)。
我该如何实现这一点?
编辑:感谢strager为我提供了我要寻找的名称。我已编辑标题和标签以便更容易找到。
我该如何实现这一点?
编辑:感谢strager为我提供了我要寻找的名称。我已编辑标题和标签以便更容易找到。
虽然没有内置的方法,但是你可以使用这个工具:EndianBit*。感谢Jon Skeet :P
Jon Skeet有一个EndianBitConverter 在这里可以完成这项工作。只需根据需要使用big/little endian即可。或者,只需将数据移位几次 ;-p
int i = 6;
byte[] raw = new byte[4] {
(byte)(i >> 24), (byte)(i >> 16),
(byte)(i >> 8), (byte)(i)};
你也可以使用BitConverter获取一个字节数组,然后将其反转。类似这样:
Byte[] bytes = BitConverter.GetBytes(number);
Array.Reverse(bytes);
// Then, to write the values you use
writer.Write(bytes);