在C#中将两个字节转换为Int16?

时间:2011-07-24 14:56:23

标签: c# memory byte bytearray short

  

可能重复:
  Good way to convert between short and bytes?
  How can I combine 4 bytes into a 32 bit unsigned integer?

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

3 个答案:

答案 0 :(得分:11)

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

短:

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

的Int32

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

请注意这些结尾。

答案 1 :(得分:8)

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

答案 2 :(得分: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