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