将2个字节(HighByte / LowByte)组合到C#中的带符号Int

时间:2015-04-20 10:17:00

标签: c# byte

在过去3个小时里,我一直在努力解决这个问题,但我并没有做对。 我有highByte / lowByte值,我需要将它组合成一个名为temp的签名int(我认为)。我知道输入和所需的输出,但此时我认为这可能完全不合适。

int temp = ((highByte) & 0xFF) << 8 | (lowByte) & 0xFF;

我正在使用此功能,但它没有返回所需的输出。

这次转换肯定有问题,或者我的逻辑已应用于此问题。期望的结果是:

  

如果highByte / lowByte字节的值都为255,则输出应为   是-1。

1 个答案:

答案 0 :(得分:3)

int是4字节整数值(系统名称Int32)。如果您希望将highByte的高位字节视为符号,则将表达式的右侧部分强制转换为short(Int16)

int temp = (short)(((highByte) & 0xFF) << 8 | (lowByte) & 0xFF);