BitConverter.ToUInt16()期望字节被反转,我想这就是它们如何存储在内存中。但是如何在不颠倒的时候转换它,而不用修改数组呢?将字节数组转换为C中的Int-likes#
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
BitConverter.ToUInt16()期望字节被反转,我想这就是它们如何存储在内存中。但是如何在不颠倒的时候转换它,而不用修改数组呢?将字节数组转换为C中的Int-likes#
Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
这听起来像你想知道我在EndianBitConverter
MiscUtil
,它可以让你指定你是否想使用大或小字节序。
基本上它提供了与BitConverter
相同的功能,但是作为实例方法。然后你得到合适的EndianBitConverter
,并做你想做的。
(它提供了更多的功能,用于与阵列,其可以是或可以不是对你有用提高工作效率。)
图书馆是开放下一个公平允许许可证来源。
我认为你最好的调用是使用Array.Reverse方法来反转数组。
http://msdn.microsoft.com/en-us/library/system.array.reverse(VS.71).aspx
您也可以使用IPAddress.HostToNetworkOrder。
这将扭转整个数组,而不仅仅是每个Int16的字节。 – 2009-04-29 16:46:23
乔恩的权利,这正是我想要避免的。但thnx回复! – flamey 2009-04-29 16:58:19