Python 结构解包结束问题:结构格式中的错误字符
我正在将二进制文件读入4字节无符号整数流Python 结构解包结束问题:结构格式中的错误字符,python,struct,unpack,Python,Struct,Unpack,我正在将二进制文件读入4字节无符号整数流 if filename: with open(filename, mode='rb') as file: fileData = file.read() u32Data = struct.unpack('I' * (len(fileData )//4), fileData ) 我的机器上的默认endian是little endian。在上面的最后一行代码中,我将endianness更改为big endian: u3
if filename:
with open(filename, mode='rb') as file:
fileData = file.read()
u32Data = struct.unpack('I' * (len(fileData )//4), fileData )
我的机器上的默认endian是little endian。在上面的最后一行代码中,我将endianness更改为big endian:
u32Data = struct.unpack('>I' * (len(fileData )//4), fileData )
但是,当我将最后一行从little改为big endian时,会出现以下错误:
struct.error: bad char in struct format
如何解决此问题?您的格式字符串以
'>I>I>I>结尾。
这是无效的,
仅允许作为格式字符串中的第一个字母。使用
u32Data = struct.unpack('>' + ('I' * (len(fileData )//4)), fileData )
格式字符串的结尾为
'>I>I>I>I...
这是无效的,
仅允许作为格式字符串中的第一个字母。使用
u32Data = struct.unpack('>' + ('I' * (len(fileData )//4)), fileData )
也可以在没有括号的情况下使用:u32Data=struct.unpack('>'+'I'*(len(fileData)//4,fileData)也可以在没有括号的情况下使用:u32Data=struct.unpack('>'+'I'*(len(fileData)//4,fileData)