Python中hex字符串转整数列表后反向还原长度不符如何解决?
问题原因
反向转换的代码没有对输出的十六进制字符做补零对齐:当整数数值小于16时,format(i, 'x')只会输出1位十六进制字符(比如十进制的10会输出a而非0a),每出现一个这类数值,最终字符串长度就会少1位,这就是reversed_hex长度比原始值短的核心原因。
修复方案
把反向转换的格式符修改为02x即可,该格式符会强制每个整数输出2位十六进制字符,不足两位时左侧补前导零:
reversed_hex = ''.join([format(i, '02x') for i in list_of_ints])
补充说明
- 如果原始十六进制字符串使用大写字符(比如
FF而非ff),可以把格式符换成02X,就能完全匹配原始字符串的大小写格式。 - 你原有代码里的
int(i)是冗余操作,list_of_ints里的元素本身就已经是整数类型,无需额外转换。
内容的提问来源于stack exchange,提问作者figbar
相关产品推荐
相关产品推荐

