来自非线性十六进制响应的整数

时间:2013-04-11 00:07:16

标签: python hex

我正在通过串口与PLC通话,它们的规范没有描述从十六进制响应中获取值的任何公式。我正在编写一个Python脚本来处理响应。

我认为最终结果是有符号整数,C ++中的“short”和SEND消息中提到的LSB / MSB规范,但我不确定这是否适用于响应。

以下是我正在使用的一些值:

18 FD = -744
20 FF = -224
07 00 = 7    (parsed OK)
0A 00 = 10   (parsed OK)
64 00 = 100  (parsed OK)
36 01 = 310  (parsed OK)
B0 04 = 1200 (parsed OK)
A4 06 = 1700 (parsed OK)

目前我的计算正确地解析为FF 00,但不知道正确的公式意味着高于255的值仍然是个谜。

编辑:写完问题之后就变得明显了。十六进制字节需要反转。现在负值是未知的。

如果需要,可以在 here 找到规范。

1 个答案:

答案 0 :(得分:2)

负数似乎使用two's complement进行编码。粗略地说,如果设置了该数字的最高位,则必须减去2 ^ 16以获得“实际”值。