Контекст: я пробую программу, которая захватывает некоторые сообщения MQTT и затем регистрирует их.При этом я сталкиваюсь со странной проблемой, и мне нужна помощь в этом.
Во входящих сообщениях я получаю одну строку в кодировке base64.Моя программа пытается декодировать и анализировать двоичные данные, чтобы выяснить некоторые заголовки пакета.Код, который я имею, выглядит следующим образом:
result = base64.standard_b64decode("AO/Nq4lnRSMBZXMnLHcKXhSObYxiFvY=")
Вывод результата выглядит следующим образом:
b"\x00\xef\xcd\xab\x89gE#\x01es',w\n^\x14\x8em\x8cb\x16\xf6"
Если та же операция выполняется с использованием реализации nodeJS, вывод будет совершенно другим:
<Buffer 00 ef cd ab 89 67 45 23 01 65 73 27 2c 77 0a 5e 14 8e 6d 8c 62 16 f6>
Я прочитал несколько других ссылок в переполнении стека и не мог понять, почему существует разница.Ссылка NodeJS base64 против Python base64 имеет некоторые допустимые точки в отношении кодировки, которая была сделана, поэтому то, что Python делает здесь, не является неправильным.
После прочтения я нашел еще один совет, в котором использовалась функция binascii.Итак, если я применяю эту логику, мой вывод выглядит точно так же, как вывод NodeJS!
import binascii
binascii.hexlify(result)
b'00efcdab89674523016573272c770a5e148e6d8c6216f6'
Теперь мой вывод выглядит так, как я хочу.Однако есть еще одна новая проблема.Вывод декодирования base64 был в формате b '\ x00', а вывод hexlify - b'0 '.Из-за этой разницы я не могу запустить другую часть моего кода, которая разбивает этот выходной байт на байт для создания struct.unpack в различных форматах в зависимости от заголовка пакета.
Есть ли какая-либо помощь, которую яможно продолжить?