在python中解压缩unsigned short

时间:2018-10-15 01:01:01

标签: python unpack

我最近需要使用Python解码二进制文件。该文件包含用于存储所需的“年”和“月”信息的无符号缩写。但是奇怪的是:“年”存储为无符号短型,大小为2个字节。 “月”也存储为无符号短号。但是大小为1个字节。 (请参见下面的文件结构)

file struct

问题是我可以使用Python的unpack方法来解码文件,但是unsigned short类型仅接受2个字节的数据。那么,如何解码“月”信息呢?我应该使用其他技术吗?

import struct

with open("1.bin", "rb") as binary_file:
     a = struct.unpack('H',binary_file.read(2))
     print (type(a), a)            

1 个答案:

答案 0 :(得分:0)

一个字节的无符号整数称为无符号字符。因此,您应该可以使用它来解码该字节:

a = struct.unpack('B',binary_file.read(1))

或者,您可以像这样解压整个记录:

vals = struct.unpack('=HH5s13s5sHBBBB', binary_file.read(33))

或直接将其解压缩为命名变量,如下所示:

len, typ, fver, pver, rev, year, month, day, hour, minute = \
    struct.unpack('=HH5s13s5sHBBBB', binary_file.read(33))