Итак, у вас есть байтовый объект, и звучит так, будто вам нужна строка, содержащая шестнадцатеричное представление этих байтов.
Ответы на на этот вопрос описывают, как это сделать в стандартном Python, но после быстрой проверки с помощью онлайн-консоли MicroPython вы не можете просто позвонить .hex()
на сам объект bytes, и у нас нет модулей binascii
или codecs
, поэтому ни один из этих методов не будет работать.
Однако с простым Python не сложно сделать то, что вы хотите:
>>> data = b'hello!'
>>> ''.join(['{:02x}'.format(b) for b in data])
'68656c6c6f'
Здесь мы используем понимание списка, чтобы получить каждый байт b
по очереди от объекта байтов data
. Затем мы форматируем это в двухсимвольную строку в шестнадцатеричном формате с начальным нулем, если необходимо, используя '{:02x}'.format(b)
. Выражение в квадратных скобках дает нам список этих двухсимвольных строк, поэтому, наконец, мы join
их вместе разделяем пустой строкой.
Если вы хотите, чтобы между каждой двузначной группой был пробел, замените ''
на ' '
.
Я считаю this полезной отправной точкой для методов форматирования строк в Python. MicroPython поддерживает методы% -operator и str.format
, но не форматированные строковые литералы.