• 【python】 int、float、double与16进制字符串的互相转换


    一、无符号int、float、double与16进制字符串的互相转换

    1. import struct
    2. def intToHex(num): # int转16进制
    3. return hex(num)[2:].upper()
    4. def hexToInt(hexString): # 16进制转int
    5. return int(hexString, 16)
    6. def floatToHex(floatValue): # float转16进制
    7. return struct.pack('>f', floatValue).hex().upper()
    8. def hexToFloat(hexString): # 16进制转float
    9. return struct.unpack('>f', bytes.fromhex(hexString))[0]
    10. def doubleToHex(doubleValue): # double转16进制
    11. return struct.pack('>d', doubleValue).hex().upper()
    12. def hexToDouble(hexString): # 16进制转double
    13. return struct.unpack('>d', bytes.fromhex(hexString))[0]
    14. if __name__ == '__main__':
    15. print(intToHex(1000), hexToInt("3E8"))
    16. print(floatToHex(1.0), hexToFloat("3F800000"))
    17. print(doubleToHex(1.00), hexToDouble("3FF0000000000000"))

    结果:

    二、有符号int与16进制字符串的相互转换

    1. bytesNumber = 6 # 传入几个字节
    2. # 传入bytesNumber个字节十六进制字符串,返回int类型
    3. def str_to_signed_int_bytes(data: str):
    4. int_data = int(data, 16)
    5. if int_data >= (2**(bytesNumber*8)-2)/2:
    6. int_num = int_data - (2**(bytesNumber*8)-2)
    7. else:
    8. int_num = int_data
    9. return int_num
    10. # 传入int类型字符串,返回bytesNumber个字节带符号十六进制数据字符串
    11. def signed_int_to_str_bytes(int_num: int):
    12. if int_num < 0:
    13. int_temp = (2**(bytesNumber*8)-2) + int_num
    14. else:
    15. int_temp = int_num
    16. str_hex = '{:04X}'.format(int_temp)
    17. return str_hex.zfill(bytesNumber*2)
    18. if __name__ == '__main__':
    19. print(str_to_signed_int_bytes('FFFFFF587239'))
    20. print(signed_int_to_str_bytes(-10980805))

    测试结果:

    另一种写法:

    1. def Sign_IntTo2ByteString(num): # 有符号,int转2字节字符串
    2. return bytes.hex((num).to_bytes(2,'big',signed=True)).zfill(4)
  • 相关阅读:
    MySQL的DCL语句
    【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容
    Python&CV获取理想的物体外形ROI
    零代码+分布式微服务架构打造新一代一站式服务集成平台
    super关键字
    在ffmpeg上实现libhevc wrapper
    Vue3+Vue-i18n+I18N ALLY+VSCODE 自动翻译多国语言
    [工业互联-1]:工业互联全局概述
    多个checkpoint 的参数进行平均
    反序列化字符逃逸漏洞之
  • 原文地址:https://blog.csdn.net/ChaoChao66666/article/details/128136181