如何在ConstBitStream中从给定偏移量开始查找二进制数据?

2024-09-26 22:12:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在加载为ConstBitStream的文件中查找特定字节:

s = ConstBitStream(filename=myFile)
found = s.find('0x4140', bytealigned=False)

这是第一次出现的情况。找到第一个序列后,我想再次使用find方法来查找下一个序列,但现在从偏移量开始:

^{pr2}$

这似乎行不通。我总是从第一次出现的二进制序列中得到位置。在

怎么了?在


更新:

(第一个founds.bytepos的值):

found = {tuple} (54784, )
s.bytepos = {int} 6848

(第二个founds.bytepos的值):

s.bytepos = {int} 32969
found = {tuple} (54784, )

似乎设置start=s.bytepos没有任何效果。在


Tags: 文件方法false字节情况序列findfilename
1条回答
网友
1楼 · 发布于 2024-09-26 22:12:46

start参数是开始搜索的位位置,而不是字节位置。要获得下一个实例,您需要使用start=s.bitpos + 1。在

另一件要注意的事情是,如果使用bytealigned=False(这是默认值),那么通常甚至不能在之后使用s.bytepos,因为当前位置可能不是字节对齐的(它将引发一个ByteAlignError)。很可能你想要bytealigned=True,这也快了一点。在

还请注意,您可以使用

g = s.findall('0x4140')

它返回一个生成器,该生成器提供所有位置,而不必执行多个find调用(只需重复使用g.next()或{}一次性获取所有位置)。在

相关问题 更多 >

    热门问题