Python 结构解包结束问题:结构格式中的错误字符

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

我正在将二进制文件读入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:

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)