Python3中如何将-1输出为0xFF、0xFFFF等指定长度的无符号十六进制格式
实现方法
Python的整数是可变精度的有符号类型,默认不会按固定位宽做无符号转换,你只要按照你需要的输出位宽做一次位掩码截断,就能得到对应格式的十六进制结果:
- 要输出8位无符号的
0xFF格式,对数值和0xFF做按位与运算 - 要输出16位无符号的
0xFFFF格式,对数值和0xFFFF做按位与运算 - 更高位宽同理,32位就用
0xFFFFFFFF做掩码
示例代码
对应你给出的场景修改后的实现如下:
>>> key = -1 # 输出0xFF格式 >>> print(hex(key & 0xFF)) 0xff # 输出0xFFFF格式 >>> print(hex(key & 0xFFFF)) 0xffff # 格式化输出大写、指定宽度 >>> print("Key={:4X}".format(key & 0xFF)) Key= FF # 带0x前缀的格式化输出 >>> print("Key={:#4X}".format(key & 0xFF)) Key= 0xFF # 16位带前缀格式化输出 >>> print("Key={:#6X}".format(key & 0xFFFF)) Key=0xFFFF
如果需要频繁调用,可以封装为通用函数:
def to_unsigned_hex(val: int, bits: int = 8) -> str: mask = (1 << bits) - 1 return hex(val & mask) # 调用测试 print(to_unsigned_hex(-1, 8)) # 0xff print(to_unsigned_hex(-1, 16)) # 0xffff
内容的提问来源于stack exchange,提问作者user2542266
相关产品推荐
相关产品推荐

