Для каждого символа в исходной строке используйте ord
, чтобы получить числовое значение символа, а затем используйте операцию форматирования строки, чтобы выразить это числовое значение в виде строки, содержащей пару шестнадцатеричных символов.Объедините эти двузначные строки в одну строку.
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''
for ch in mystring:
number = ord(ch)
hexdigits = '{:02x}'.format(number)
result += hexdigits
print result
Вы можете сделать все это в одной строке, используя понимание списка, чтобы собрать пары строк шестнадцатеричных цифр в список, а затем используя *Метод 1005 * с пустой строкой-разделителем для склеивания шестнадцатеричных строк в одну строку.
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''.join([ '{:02x}'.format(ord(ch)) for ch in mystring ])
print result
Или вместо понимания списка вы можете использовать map
с lambda
для построения спискапар шестнадцатеричных цифр.
mystring = '\xf0z\xd8[\xfc\x7f'
result = ''.join(map(lambda ch: '{:02x}'.format(ord(ch)), mystring))
print result
Версия map
труднее читать, но она может работать немного быстрее.