结构解包字节序问题:结构格式中的字符不正确



我正在将一个二进制文件读取为4字节无符号整数流。

if filename:
with open(filename, mode='rb') as file:
fileData = file.read()
u32Data = struct.unpack('I' * (len(fileData )//4), fileData )

我的机器上默认的端序是小端序。在上面的最后一行代码中,我将endianness改为big-endian:

u32Data = struct.unpack('>I' * (len(fileData )//4), fileData )

然而,当我将最后一行从little改为big endian时,我出现了以下错误:

struct.error: bad char in struct format

如何解决此问题?

您的格式字符串最终为'>I>I>I>I>I>I...',这是无效的,>只允许作为格式字符串中的第一个字母。使用

u32Data = struct.unpack('>' + ('I' * (len(fileData )//4)), fileData )

最新更新