Python读取无符号16位整数的二进制文件

时间:2019-06-16 12:17:04

标签: python binary format

我必须使用Python读取二进制文件,并将其内容存储在数组中。我在此文件上得到的信息就是

filename.bin is of size 560x576 (height x width) with 16 b/p, i.e., unsigned 16-bit integer for each pixel

这是到目前为止我能想到的:

import struct
import numpy as np
fileName = "filename.bin"

with open(fileName, mode='rb') as file: 
    fileContent = file.read()



a = struct.unpack("I" * ((len(fileContent)) // 4), fileContent)

a = np.reshape(a, (560,576))

但是我得到了错误

cannot reshape array of size 161280 into shape (560,576)

161280恰好是560 x 576 = 322560的一半。我想了解我在做错什么,以及如何读取二进制文件并以所需的格式进行整形。

1 个答案:

答案 0 :(得分:1)

您正在使用32位无符号格式的“ I”,而不是16位无符号格式的“ H”。

这样做

a = struct.unpack("H" * ((len(fileContent)) // 2), fileContent)