4

可能的重复:
在短字节和字节之间转换的好方法?
如何将 4 个字节组合成 32 位无符号整数?

好的,所以我正在开发这个虚拟机,它有 64 kbs 的内存。我正在使用 byte[] 数组作为内存,但我遇到了一个问题。如何将 2 个字节转换为短字节或将 4 个字节转换为 Int32?

4

3 回答 3

12

其他人建议使用 BitConverter。
这是一个不同的解决方案

短的:

var myShort = (short) (myByteArray[0] << 8 | myByteArray[1]);

整数32

var myint = myByteArray[0] << 24 | myByteArray[1] << 16 | myByteArray[2] << 8 | myByteArray[3];

不过请注意字节顺序。

于 2011-07-24T15:02:53.787 回答
8

您可以使用BitConverter。如果它是虚拟机,您需要仔细检查预期的字节序(以防它与您的 PC 的字节序相反。)

于 2011-07-24T14:59:19.050 回答
3
// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);

其中 bytes 是要转换的字节数组。

来源:http: //msdn.microsoft.com/en-us/library/bb384066.aspx

于 2011-07-24T15:00:36.463 回答