@art1636203

Как осуществить «поиск» по конкретной комбинации байт в гпсч?

Есть генератор псевдослучайных чисел - выводит(по одному байту) определенную комбинацию по своему алгоритму:
bytes = ("%02x" % (algo))
sys.stdout.write(bytes)

Вопрос: как осуществить "поиск" по конкретной комбинации байт?
К примеру, вывод генератора - a1b2c3d4e5f6, и нужно остановить выполнение программы если в процессе генерации появятся именно заданные байты d4e5 ('d4', а за ним сразу 'e5').

По одному байту понятно:
if bytes == 'd4':
    exit(0)

Но если первое значение подходит, то как быть с проверкой второго (третьего, четвертого и т.д.), сразу после него?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
longclaps
@longclaps
# для длинного хвоста
tail = (None, None)
for r in 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6: # да, вот такой хреновый гпсч
    print("%02x" % r)
    tail = tail[1:] + (r,)
    if tail == (0xd4, 0xe5):
        break

# для короткого хвоста
t = None
for r in 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6:
    print("%02x" % r)
    if t == 0xd4 and r == 0xe5:
        break
    t = r

ps слово bytes уже занято - почитай об этом на досуге.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы