当我尝试打包一个整数时,我得到了一个意外的输出。对于小于或等于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:这是我的第一篇帖子,如果我不清楚,请道歉哈哈
对于ASCII范围内的可打印字符,Python将其显示为字符本身
换句话说,您将数据与其表示形式混淆
相关问题 更多 >
编程相关推荐