在Python 3中将一个整数转换为一个bytes对象会导致返回的bytes对象中出现一个“Q”?

fhity93d  于 2023-02-10  发布在  Python
关注(0)|答案(1)|浏览(140)

我正在Python 3中编写一个函数来实现LFSR。我已经解决了困难的部分,它实际上是使用反馈值逐步通过状态来获得密钥,并通过对密钥和输入数据进行AND运算来获得所有输出字节。为了使位移位、OR和XOR运算更容易,我对整数进行了所有运算,并将结果保存为整数,然而,这个函数需要一个返回类型bytes。我自己也在Google上搜索过,似乎一个可以接受的将整数转换为bytes对象的方法是类似result_bytes = result_bytes.to_bytes((result_bytes.bit_length() + 7) // 8, 'big')的操作。运行hex_result_bytes = hex(result_bytes)(注意,在此上下文中,result_bytes当前仍然是整数)并且我的result_bytes是具有值3187993425的整数,我得到了一个字符串结果“0xbe04eb51”,所以很明显我应该得到一个bytes对象,看起来像b'\xbe\x04\xeb\x51'。
在运行result_bytes = result_bytes.to_bytes((result_bytes.bit_length() + 7) // 8, 'big')之后,我应该得到b'\xbe\x04\xeb\x51'。但是,我得到的结果是b'\xbe\x04\xebQ'。我是否遗漏了什么明显的东西?我甚至不知道我是如何得到Q的,因为Q显然不是可以作为十六进制字节得到的东西。

htzpubme

htzpubme1#

这有点奇怪,我仍然不确定它为什么会这样,但实际上我运行了一个表达式,看看b'\xbe\x04\xebQ' == b'\xbe\x04\xeb\x51',它的结果是True,所以即使它看起来不一样,它们在大多数意图和目的上应该是一样的。

相关问题