Python中的二进制数据

时间:2015-12-03 17:44:27

标签: python

我有一串二进制文件,我试图转换为整数。这些块最初是8个十六进制字符,并转换为二进制字符。你如何把它变成64位的int值?

s = 'Q\xcb\x80\x80\x00\x00\x01\x9bQ\xcc\xd2\x00\x00\x00\x01\x9b'
date_chunk = s[0:8]
value_chunk = s[8:]

现在看起来像是我打印出来的十六进制。我如何制作两个整数?第一个是自纪元以来编码为秒的日期。

2 个答案:

答案 0 :(得分:4)

>>> str = '0123456789abcdef' >>> str[-8:] '89abcdef' >>> str = 'abcd' >>> str[-8:] 'abcd' 模块解包二进制文件。使用struct代码签名。

qq

您还提到了原始的8个十六进制字符。在这种情况下使用>>> s = 'Q\xcb\x80\x80\x00\x00\x01\x9bQ\xcc\xd2\x00\x00\x00\x01\x9b' >>> len(s) 16 >>> import struct >>> struct.unpack('>QQ',s) # big-endian (5893945824588595611L, 5894316909762970011L) >>> struct.unpack('<QQ',s) # little-endian (11169208553011465041L, 11169208550869355601L) 功能。例如:

binascii.unhexlify

答案 1 :(得分:0)

import struct
struct.unpack(">QQ",s)

struct.unpack("<QQ",s)

取决于生成字节的机器的字节顺序