在Python中读取非标准位长整数的二进制文件

时间:2017-01-05 19:02:13

标签: python matlab binaryfiles

我有一个matlab脚本,通过读取非标准长度位来加载值。

例如:

[file, errmsg] = fopen(FileName,'r');

year = fread(file,1,'ubit12','ieee-le'); 
month = fread(file,1,'ubit4','ieee-le'); 
day = fread(file,1,'ubit5','ieee-le'); 
version = fread(file,1,'ubit11','ieee-le');

加载的值为:

year =2016
month =7
day =21
version =0

虽然该文件的二进制版本是:

11100000 01110111 00010101 00000000

(通过在python中执行'{0:08b}'.format(ord(byte))检索)

换句话说,

year -> 4 lsb of byte 2 + byte 1 (011111100000)
month -> 4 msb of byte 2 (0111)
day -> 5 lsb of byte 3 (10101)
version -> 3 msb of byte 3 + byte 4 (00000000000)

是否有一种pythonic方式来实现相同的功能?

1 个答案:

答案 0 :(得分:0)

Bit array我认为这就是你所需要的。