Python中int类型to_bytes()方法结果疑问:为何输出b"\x00d"而非b"\x00\x64"
关于Python int.to_bytes()返回b"\x00d"的解释
你看到的b"\x00d"和b"\x00\x64"其实是完全等价的字节串,只是Python的显示方式不同而已,本质都是2字节的数据,原因如下:
ASCII字符自动替换显示:Python在打印字节串时,会把对应ASCII可打印字符的字节直接显示为字符,而非十六进制转义。0x64对应的ASCII字符就是小写字母'd',所以Python会把
\x64显示成'd',但底层存储的字节值还是0x64。验证字节长度:直接用
len()函数就能确认它确实是2字节:a = 100 b = a.to_bytes(2, "big") print(len(b)) # 输出:2查看实际字节值:把字节串转成整数列表,就能看到每个字节的真实数值:
print(list(b"\x00d")) # 输出:[0, 100] print(list(b"\x00\x64")) # 输出:[0, 100]两者的字节内容完全一致,只是显示形式不同。
简单说,这只是Python为了可读性做的显示优化,实际生成的2字节数据和你预期的b"\x00\x64"没有任何区别。
内容的提问来源于stack exchange,提问作者agongji
相关产品推荐
相关产品推荐

