1

我对python很陌生,使用python 2.7。我必须读入一个二进制文件,然后将一些字节连接在一起。所以我尝试了

f = open("filename", "rb")
j=0
infile = []
try:
    byte = f.read(1)
    while byte != "":
        infile.append(byte) 
        byte = f.read(1)
finally:
    f.close()
blerg = (bin(infile[8])<<8 | bin(infile[9]))
print type

我意识到重铸为二进制可能是不必要的,但这是我后来的尝试之一。

我得到的错误是 TypeError: 'str' object cannot be mapped as index. 这对我来说是个新闻,因为我没有在任何地方使用字符串。!@#% 我做错了什么?

编辑:完整的回溯文件 binaryExtractor.py,第 25 行,在 blerg = (bin(infile[8])<<8 | bin(infile[9])) 类型错误:'str' 对象不能被解释为索引

4

2 回答 2

2

您应该尽可能使用struct,而不是为此编写自己的代码。

>>> struct.unpack('<H', '\x12\x34')
(13330,)
于 2012-08-07T20:40:48.493 回答
1

您想使用ord从单个字符串返回整数的函数,而不是bin返回二进制数的字符串表示形式。

于 2012-08-07T20:28:02.493 回答