C# byte[] to long and back

本文关键字:long and back to byte | 更新日期: 2023-09-27 18:12:06

我想将给定的字节数组转换为int型。然后我想把这个过程倒过来。那就是我想要从int中取回原始的字节数组。我想这样的东西会起作用:

byte[] myBytes = { 0, 0, 0, 32 };
if (BitConverter.IsLittleEndian)
    Array.Reverse(myBytes);
int i = BitConverter.ToInt32(myBytes, 0);
Console.WriteLine("int: {0}", i); // Output: 32
byte[] newBytes = BitConverter.GetBytes(i);
Console.WriteLine("byte array: " + BitConverter.ToString(newBytes));
// Outputs: 20-00-00-00

所以它不会给我返回原来的字节数组。我做错了什么?

C# byte[] to long and back

您使用Array.Reverse反转字节没有明显的原因-考虑到您使用BitConverter转换为int,并使用int转换为,您根本不需要Array.Reverse调用。

如果您想将字节数组处理为大端序,而您面对的是小端序的BitConverter,则必须在两种情况下反转数组,而不仅仅是一种。基本上,您应该将BitConverter视为提供可逆转换,但它可能不是您想要的确切转换。

如果你想为这种转换指定端序,你可能想在我的MiscUtil项目中使用我的EndianBitConverter