欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 十进制和十六进制相互转换

程序员文章站 2024-03-17 13:04:16
...

在处理报文数据时,出现了十六进制两字节带符号整型数据,由于python没有这个类型,所以需要自己转换,我参考了一些资料,写出了python对应的代码。

https://blog.csdn.net/happygrilclh/article/details/106194107

下面是转换的代码。

# 运算的数据是2字节带符号整型数据,当然可以按照需要自己修改

# 传入十六进制字符串,返回int类型
def str_to_signed_int_2bytes(data: str):
    int_data = int(data, 16)
    # 二进制数是1开头,即所代表的数是负数,转换出来的数字大于32768(0x8000)
    if int_data >= 32768:
        int_num = int_data - 65536
    else:
        int_num = int_data
    return int_num


# 传入int类型字符串,返回2字节带符号十六进制数据字符串
def signed_int_to_str_2bytes(int_num: int):
    if int_num < 0:
        int_temp = 65536 + integer
    else:
        int_temp = int_num
    str_hex = '{:04X}'.format(int_temp)
    return str_hex


print(str_to_signed_int_2bytes('ffff'))
print(signed_int_to_str_2bytes(-1))

输出结果

-1
FFFF

成功转换了,效果还行。

相关标签: python