在Python中将“大”整数转换为字节时遇到问题

2024-10-04 01:22:59 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试打包一个整数时,我得到了一个意外的输出。对于小于或等于16的值,输出与我预期的一样,但是,对于大于16的值,它会破坏我预期的输出。我在下面附上了几个例子

Integer: 4
Output: b'\x00\x00\x00\x04'

Integer: 56
Output: b'\x00\x00\x008'

在这个例子中,整数4工作得很好,但是,我希望56的输出是b'\x00\x00\x00\x38'(转换为十六进制)

Integer: 20
Output: b'\x00\x00\x00\x14'

Integer: 56
Output: b'\x00\x00\x00('

Integer: 8
Output: b'\x00\x00\x00\x08'

在这个例子中,整数8给了我一个预期的输出,然而,对于整数20,我期望b'\x00\x00\x00\x14',对于40的大小,我期望b'\x00\x00\x00\x28'(由于"(",这一点让我特别困惑)

到目前为止,我已经尝试了3种不同的方法来转换这些整数,但是它们都为较大的整数提供了特殊字符

struct.pack('>i', (size)

bytes([size])

(int(size)).to_bytes(1, byteorder='big')

我怀疑我需要在打包整数之前对其进行操作,但我现在感到非常困惑。我假设的预期输出是否有问题?或者你能给我什么提示让我走上正确的道路

PS:这是我的第一篇帖子,如果我不清楚,请道歉哈哈


Tags: 方法outputsizebytes整数integer例子x00