我正在将一个二进制文件读取为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 )