struct.pack 显示移位数据



我正在尝试使用struct.pack来打包哈希问题,但没有得到预期的结果。

这就是我打包数据的方式:

hash = hashlib.sha256(input).digest()
print('hash = ', hash.hex())
packed = struct.pack('!32p', hash)
print('packed = ', packed.hex()) 

下面是一个示例结果: 哈希 = b5dbdb2b0a7d762fc7e429062d64b711d240e8f95f1c59fc28c28ac6677ffeaf

包装 = 1fb5dbdb2b0a7d762fc7e429062d64b711d240e8f95f1c59fc28c28ac6677ffe

字节似乎已移动,并且已添加"1f"。这是格式说明符不正确的结果吗?

编辑:我相信第一个字节是数据的长度,因为我使用的是"p"。有什么办法可以避免这种情况吗?我不想在我的打包数据中包含它

'p'格式字符编码一个"Pascal字符串",其中包括字符串开头的长度。这是有记录的。如果您不希望这样做,请使用's'格式来仅获取字节本身:

packed = struct.pack('!32s', hash)
print('packed =', packed.hex())

输出:

packed = b5dbdb2b0a7d762fc7e429062d64b711d240e8f95f1c59fc28c28ac6677ffeaf

最新更新