У меня есть шестнадцатеричная строка, сделанная из строки Unicode с помощью этой функции:
def toHex(s):
res = ""
for c in s:
res += "%02X" % ord(c) #at least 2 hex digits, can be more
return res
hex_str = toHex(u"...")
Это возвращает строку, подобную этой:
"80547CFB4EBA5DF15B585728"
Это последовательность из 6 китайских символов.
Но
u"Knödel"
преобразуется в
"4B6EF664656C"
Теперь мне нужна функция для преобразования этого обратно в исходный Unicode. Кажется, что китайские символы имеют 2-байтовое представление, в то время как во втором примере все символы представлены 1-байтовым. Поэтому я не могу просто использовать unichr () для каждого 1- или 2-байтового блока.
Я уже пробовал
binascii.unhexlify(hex_str)
, но он, похоже, конвертирует побайтово и возвращает строку, а не Unicode. Я также пробовал
binascii.unhexlify(hex_str).decode(...)
с разными форматами. Никогда не получал исходную строку Unicode.
Заранее большое спасибо!