C#byte []来回长

时间:2013-05-05 11:49:33

标签: c# bytearray

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

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

1 个答案:

答案 0 :(得分:2)

由于没有明显的原因,您正在使用Array.Reverse撤消字节 - 假设您使用BitConverter进行转换 int和< em>来自 int,您根本不需要Array.Reverse来电。

如果你想将字节数组视为big-endian并且你面临一个小端BitConverter,你必须在两个情况下反转数组,而不仅仅是一。基本上您应该将BitConverter视为提供可逆转换,但它可能不是您想要的确切转换。

如果您想为此类转化指定字节顺序,则可能需要在我的MiscUtil项目中使用我的EndianBitConverter