C# C语言中字节数组到整数的转换#

C# C语言中字节数组到整数的转换#,c#,integer,bytearray,C#,Integer,Bytearray,ToUInt16()希望字节被反转,我想这就是它们存储在内存中的方式。但是当它没有反转时,我如何转换它,而不修改数组 Byte[] ba = { 0, 0, 0, 6, 0, 0 }; BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006 我认为最好的方法是使用array.reverse方法反转数组 我认为最好的方法是使用array.reverse方法反转数组 听起来好像您想要我的EndianBitConver

ToUInt16()希望字节被反转,我想这就是它们存储在内存中的方式。但是当它没有反转时,我如何转换它,而不修改数组

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006

我认为最好的方法是使用array.reverse方法反转数组


我认为最好的方法是使用array.reverse方法反转数组


听起来好像您想要我的
EndianBitConverter
输入,它允许您指定是要使用大endianness还是小endianness

基本上,它提供与
位转换器
相同的功能,但作为实例方法。然后获得适当类型的
EndianBitConverter
,并对其执行所需操作

(它提供了更多的功能来高效地使用阵列,这可能对您有用,也可能对您没有用处。)


该库是在相当许可的许可下开放源代码的。

听起来好像您想要我的
EndianBitConverter
,它允许您指定是要使用大endianness还是小endianness

基本上,它提供与
位转换器
相同的功能,但作为实例方法。然后获得适当类型的
EndianBitConverter
,并对其执行所需操作

(它提供了更多的功能来高效地使用阵列,这可能对您有用,也可能对您没有用处。)


该库是在相当许可的许可下开源的。

您也可以使用IPAddress.HostToNetworkOrder。

您也可以使用IPAddress.HostToNetworkOrder。

这将反转整个数组,而不仅仅是每个Int16的字节。Jon是对的,这是我试图避免的。但是谢谢你的回复!这将反转整个数组,而不仅仅是每个Int16的字节。Jon是对的,这就是我试图避免的。但是谢谢你的回复!相当宽容的意思是“如果你想改变它,就不要,因为jon skeet比你更了解你的代码,并且已经为你的代码“类型许可证”优化了它?相当宽容的意思是“如果你想改变它,就不要,因为jon skeet比你更了解你的代码,并且已经为你的代码优化了它”类型许可证?