Python用hex函数处理十六进制数丢失前导零 如何保留固定长度?
十六进制前导零保留解决方案
问题原因
hex() 函数仅会输出表示数值所需的最短十六进制字符串,不会保留原始字符串的前导零;int() 转换后仅保存数值大小,也不记录原始字符串的长度信息,所以会出现前导零丢失的问题。
解决方法
通用方案(适配不同长度的原始十六进制行)
先读取每行原始十六进制的长度,输出时按照原始长度补零即可,修改后代码如下:
with open("data.txt", "r") as file: for line in file: line = line.strip() # 记录原始十六进制数字部分的长度(去掉开头的0x) origin_digit_len = len(line) - 2 num = int(line, 0) # 格式化输出:前缀加0x,数字部分用0填充到原始长度 res = f"0x{num:0{origin_digit_len}x}" print(res)
固定长度方案(所有原始十六进制长度一致时使用)
如果你的所有输入十六进制数字部分都是固定128位(示例输入就是该长度),可以直接写死长度,代码更简洁:
with open("data.txt", "r") as file: for line in file: num = int(line.strip(), 0) res = f"0x{num:0128x}" print(res)
格式化参数说明
- 格式符末尾的
x表示输出小写十六进制字符,如果需要匹配大写字母,替换为X即可 0{长度}表示使用0作为填充字符,将数字部分补到指定长度
内容的提问来源于stack exchange,提问作者Dew Debra
相关产品推荐
相关产品推荐

