Я пытаюсь найти конкретные байты внутри файла, загруженного в ConstBitStream:Как найти двоичные данные в ConstBitStream, начиная с заданного смещения?
s = ConstBitStream(filename=myFile)
found = s.find('0x4140', bytealigned=False)
Это работает отлично для первого появления. После обнаружения первой последовательности, я хочу найти следующий с помощью метода find
снова, но исходя из смещения в настоящее время:
s.bytepos = position_after_the_first_occurrence + my_offset
found = s.find('0x4140', start=s.bytepos, bytealigned=False)
Это не похоже на работу. Я всегда получаю позицию от первого появления моей двоичной последовательности.
Что случилось?
ОБНОВЛЕНИЕ:
(значения первого found
и s.bytepos
):
found = {tuple} (54784,)
s.bytepos = {int} 6848
(значения второго found
и s.bytepos
):
s.bytepos = {int} 32969
found = {tuple} (54784,)
Кажется, что установка start=s.bytepos
не имеет любой эффект.
Вы можете распечатать значения 'found' (первое значение) и' s.bytepos'? –
Не используйте 's.bytepos' в качестве значения для аргумента' start', вместо этого используйте 's.pos'. – user2683246
Убедитесь, что 'my_offset' подсчитывает байты, а не бит. Имейте в виду, что значение 'found' является кортежем с битовым смещением, а не смещением байта. – user2683246