Хорошо, следующий ответ немного выходит за рамки, если вы заботитесь только о Python 3, но этот вопрос является первым хитом Google, даже если вы не указали версию Python, поэтому вот способ, который работает как на Python 2, так и на Python 3 ,
Я также интерпретирую вопрос о преобразовании байтов в str
тип: то есть bytes-y на Python 2 и Unicode-y на Python 3.
Учитывая это, лучший подход, который я знаю, это:
import six
bytes_to_hex_str = lambda b: ' '.join('%02x' % i for i in six.iterbytes(b))
Следующее утверждение будет верно для Python 2 или Python 3, при условии, что вы не активировали unicode_literals
будущее в Python 2:
assert bytes_to_hex_str(b'jkl') == '6a 6b 6c'
(Или вы можете использовать, ''.join()
чтобы пропустить пробел между байтами и т. Д.)