我试图在加载为ConstBitStream的文件中查找特定字节:
s = ConstBitStream(filename=myFile)
found = s.find('0x4140', bytealigned=False)
这是第一次出现的情况。找到第一个序列后,我想再次使用find
方法来查找下一个序列,但现在从偏移量开始:
这似乎行不通。我总是从第一次出现的二进制序列中得到位置。在
怎么了?在
更新:
(第一个found
和s.bytepos
的值):
found = {tuple} (54784, )
s.bytepos = {int} 6848
(第二个found
和s.bytepos
的值):
s.bytepos = {int} 32969
found = {tuple} (54784, )
似乎设置start=s.bytepos
没有任何效果。在
start
参数是开始搜索的位位置,而不是字节位置。要获得下一个实例,您需要使用start=s.bitpos + 1
。在另一件要注意的事情是,如果使用
bytealigned=False
(这是默认值),那么通常甚至不能在之后使用s.bytepos
,因为当前位置可能不是字节对齐的(它将引发一个ByteAlignError
)。很可能你想要bytealigned=True
,这也快了一点。在还请注意,您可以使用
它返回一个生成器,该生成器提供所有位置,而不必执行多个}一次性获取所有位置)。在
find
调用(只需重复使用g.next()
或{相关问题 更多 >
编程相关推荐