Python: преобразование шестнадцатеричной строки Unicode в Unicode

У меня есть шестнадцатеричная строка, сделанная из строки 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.

Заранее большое спасибо!

5
задан Robert 21 July 2011 в 08:32
поделиться