Python 带符号十进制数转输出高低位的方法

凌顺实验室(lingshunlab.com)有时候在进行一些编写通信协议的时候,数据超过255时就把数据分为高位和底位的使用场景,例如CANBUS,MODBUS等等。

在这里记录一下,如何把带符号十进制数输出高低位方法,方便数据传输。在接收方收到高位和地位后再合并一起,得出传输的数据。

代码实现

# welcome to lingshunlab.com
# 带符号十进制数转输出高低位的方法
# signed int16 带符号16位整型 取值范围是 -32768~32767
# ***此方法仅适用在此取值范围使用
def changeHL(signednum):
    high = abs(signednum) >> 8
    low = abs(signednum) & 0xff

    # 负数补位
    if signednum  < 0:
        temp = 65536 - abs(signednum)

        high = abs(signednum) >> 8
        low = abs(signednum) & 0xff

    return high, low

使用效果

python-decade-convert-high-low-data