作者:小鱼2502907687 | 来源:互联网 | 2023-05-17 14:05
问题是这样的下位机有个值是-5345,大家知道5345用16进制表示是0xeb1f,所以下位机发送给我两个字节(byte)eb和1f但是我收到这两个字节怎么组合成-5345
问题是这样的
下位机有个值是-5345,大家知道5345用16进制表示是 0xeb1f,所以下位机发送给我两个 字节(byte) eb和 1f
但是我收到这两个字节怎么组合成-5345
我现在用的方法是 eb左移8位(高位) 加上 1f(低位)
但是eb左移8位后就超过了 int16的最大值,造成了数据溢出的异常,求教一下大家,谢谢
10 个解决方案
不懂上下位机,但我知道计算机里要规定是2字节,那么运算中超出的就要从高位舍去,开始新的一个轮回,像23点+1就成了0点了,舍掉24从0开始
昨天刚做完。。。
byte a[2]; 放你的2个数值,高位低位自己找好。
Convert.ToInt16((a[0].ToString("X2") + a[1].ToString("X2")), 16)
BitConverter..::.ToInt16 方法
你的方式是对的,不过高低位弄错了。
byte[] b = { 0x1f, 0xeb };
short sxaa = (short)(b[0] | b[1] << 8);
或
short i = BitConverter.ToInt16(b, 0);