我想从文件中读取字节1、2和3。我知道它对应于一个字符串(在本例中是Linux二进制头的ELF
)
以下是我在网上找到的例子,我想出了这个:
with open('hello', 'rb') as f:
f.seek(1)
bytes = f.read(3)
string = struct.unpack('s', bytes)
print st
看看struct的官方文档,似乎将s
作为参数传递应该允许我读取字符串。
我知道错误:
st = struct.unpack('s', bytes)
struct.error: unpack requires a string argument of length 1
编辑:使用Python2.7
在Python 2中,
read
返回一个字符串,即“字节字符串”。若要获取单个字节,请使用bytes[i]
,它将返回另一个字符串,但只有一个字节。如果需要字节的数值,请使用ord
:ord(bytes[i])
。最后,要获取所有字节的数值,请使用map(ord, bytes)
。在你的特殊情况下,只要检查一下就够了
一步测试所有三个字节为三个字符
E
、L
和F
。但是如果你想检查数值,你不需要在这里打开任何东西。只需使用
ord(bytes[i])
(i为0,1,2)就可以得到三个字节的字节值。或者你可以使用
得到三个字节的元组。如果字节具有如下可命名语义,也可以动态解压缩该元组:
使用
'BBB'
而不是'bbb'
,以防字节值无符号。相关问题 更多 >
编程相关推荐