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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top