У меня есть шестнадцатеричная строка, созданная из строки 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"
Теперь мне нужна функция, чтобы преобразовать это обратно в исходный юникод. Кажется, что китайские символы имеют 2-байтовое представление, в то время как второй пример имеет 1-байтовые представления для всех символов. Поэтому я не могу просто использовать unichr () для каждого 1- или 2-байтового блока.
Я уже пробовал
binascii.unhexlify(hex_str)
но это, кажется, конвертирует побайтово и возвращает строку, а не юникод. Я также попробовал
binascii.unhexlify(hex_str).decode(...)
с разными форматами. Никогда не получал исходную строку Unicode.
Заранее большое спасибо!