3

我想将给定的字节数组转换为 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

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

4

1 回答 1

3

您在Array.Reverse没有明显原因的情况下反转字节 - 鉴于您正在使用BitConverter转换anintan int,您根本不需要Array.Reverse调用。

如果您想将字节数组视为 big-endian 并且遇到 little-endian BitConverter,则必须在两种情况下都反转数组,而不仅仅是一种。基本上,您应该将BitConverter其视为提供可逆转换,但它可能不是您想要的确切转换。

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

于 2013-05-05T11:53:50.710 回答