BitConverter.ToUInt16()期望字节被反转,我想这就是它们存储在内存中的方式。但是,如果没有反转,我怎么能转换它,没有修改阵列?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
答案 0 :(得分:4)
听起来你想要MiscUtil
中的EndianBitConverter
,它可以指定你是想要使用大字节还是小字节。
基本上它提供与BitConverter
相同的功能,但作为实例方法。然后,您可以获得适当类型的EndianBitConverter
并随意使用它。
(它提供了更多功能,可以有效地使用数组,这可能对你有用,也可能没用。)
图书馆是在相当宽松的许可证下开源的。
答案 1 :(得分:0)
您也可以使用IPAddress.HostToNetworkOrder。
答案 2 :(得分:-1)
我认为你最好的调用就是用Array.Reverse方法反转数组。
http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx