Обработка и работа с двоичными данными 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 (это скорее мое непонимание, чем все остальное, что яя уверен! ....)

Есть ряд ресурсов, которые ямы обнаружили, что говорят о кодировании / шестнадцатеричном сравнении, например, stackoverflow.com/questions/10561923/unicodedecodeerror-ascii-codec-cant-decode-byte-0xef-in-position-1), я 'Мы просто не нашли то, что я могу полностью понять, или это указывает мне правильный путь.

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

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

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