从同一Python字节字符串派生的不同整数

2024-06-26 08:28:04 发布

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

>>> import binascii, struct
>>> foo_hex = 'b1e92555'
>>> foo_bin = binascii.unhexlify(foo_hex)
>>> int(foo_hex, 16)
2984846677
>>> struct.unpack('i', foo_bin)[0]
1428548017

为什么这些整数不同?哪一种方法是正确的,如何将另一种方法更改为正确的?你知道吗


Tags: 方法importbinfoo整数structinthex
1条回答
网友
1楼 · 发布于 2024-06-26 08:28:04

struct是用小尾数表示法来解释这个值,而用unhexlifyint(.., 16)则把它解释为一个大尾无符号整数。你知道吗

使用<>指定输入的endianness,并使用I将其解释为有符号int:

>>> struct.unpack('>I', foo_bin)[0]
2984846677
>>> struct.unpack('<I', foo_bin)[0]
1428548017

请参阅struct文档页的Byte Order, Size and Alignment section。你知道吗

相关问题 更多 >