| 12345678910111213141516171819202122232425262728293031323334353637 |
- def convert_to_modbus(num):
- # 判断输入数值的符号
- if num >= 0:
- sign = 0
- else:
- sign = 1
- # 如果是负数,将其转换为补码形式
- if sign:
- num = (~(-num) + 1) & 0xFFFF
- return num
- def convert_from_modbus(num):
- # 判断输入数值的符号
- if (num & 0x8000):
- sign = 1
- else:
- sign = 0
- # 如果是负数,将其转换回原始的负数形式
- if sign:
- num = -((~num + 1) & 0xFFFF)
- return num
- # 测试示例
- num = -10
- modbus_value = convert_to_modbus(num)
- original_value = convert_from_modbus(modbus_value)
- assert modbus_value == 65526
- assert original_value == -10
- print("PASS")
|