Обработка и работа с двоичными данными HEX с python

Я пытаюсь сравнить некоторые байтовые значения - источник A взят из файла, который "читается":

f = open(fname, "rb")
f_data = f.read()
f.close()

Эти файлы могут быть размером от нескольких килобайт до нескольких мегабайт.

Источник B - это словарь известных шаблонов:

eof_markers = {
    'jpg':b'\xff\xd9',
    'pdf':b'\x25\x25\x45\x4f\x46',
    }

(Этот список будет расширен, как только базовый процесс заработает)

По сути, я пытаюсь «прочитать» файл (источник A), а затем постепенно проверять последний байт на соответствие списку шаблоновtestString = f_data[-counter:] Если совпадений не найдено, счетчик должен увеличиться на 1, и снова попытаться сопоставить шаблон со списком.

Я пробовал несколько разных способов заставить это работать, я могу заставить testString корректно увеличиваться, но я продолжаю сталкиваться с проблемой кодирования, где различные подходы хотят ASCIIify байт для проведения сравнения.

Я немного растерялся и не первый раз бродил по смене кодаint вu вb и не получать прошлые проблемы, такие какd9 будучи зарезервированным значением и, следовательно, не в состоянии использовать инструменты сравнения типов ASCII, например,if format_type in testString: (приводит кUnicodeDecodeError: 'ascii' codec can't decode byte a9

Я пытался преобразовать все в целое число, но это выдает эту ошибку:ValueError: invalid literal for int() with base 2: '.' или жеValueError: invalid literal for int() with base 10: '.' Я пытался преобразоватьtestString зашифровать байты, но продолжал получатьTypeError: hex() argument can't be converted to hex (это скорее мое непонимание, чем все остальное, в чем я уверен! ....)

Я обнаружил ряд ресурсов, которые говорят о кодировании / шестнадцатеричном сравнении, например, Стек дорожка.

Я уже давно застрял на этом, поэтому любые указатели принимаются с благодарностью.

Ответы на вопрос(2)

Ваш ответ на вопрос