python中的to_bytes()返回偶数位数

0 投票
2 回答
40 浏览
提问于 2025-04-13 16:39

我想把一个整数(比如3490)转换成两个字节,使用的是to_bytes()这个函数。但是我得到的结果是b'\r\xa2',而不是我期望的b'\x0d\xa2'。我哪里搞错了呢?我该怎么才能得到我想要的结果呢?

2 个回答

0

这两个表达式是一样的,因为 ord('\r') == 0x0d。换句话说, b'\x0d\xa2' == b'\r\xa2' 也是相等的。

如果你想知道怎么把字节转换成一个长度为偶数的十六进制字符串,可以试试下面的代码:

>>> 3490 .to_bytes(2).hex()
'0da2'
0

当你打印一个值时,Python会把它以字符串的形式表示出来,所以用的是ASCII编码。在这个编码中,\x0d(它表示十六进制值为0x0d的字节)会被显示为\r,因为在ASCII编码里,0x0d对应的是回车符(也就是'\r')。

如果你想查看这个值的十六进制表示,可以使用.hex()这个方法:

num = 3490
result_bytes = num.to_bytes(2, byteorder='big')
print(result_bytes.hex())

撰写回答