BitConverter.ToUInt16() 期望字节被反转,我猜这就是它们在内存中的存储方式。但是,当它没有被反转时,我如何转换它,而无需修改数组?
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
听起来你想要 my EndianBitConverter
in MiscUtil
,它可以让你指定是要使用大端还是小端。
BitConverter
基本上,它提供与实例方法相同的功能。然后你得到合适的类型EndianBitConverter
并用它做你想做的事。
(它为高效处理数组提供了更多功能,这可能对您有用,也可能没用。)
该库是在相当宽松的许可证下开源的。
您也可以使用 IPAddress.HostToNetworkOrder。
我认为你最好的电话是用 Array.Reverse 方法反转数组。
http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx