<p>我有一个由unicode字符串组成的十六进制字符串,它具有以下功能:</p>
<pre><code>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"...")
</code></pre>
<p>返回如下字符串:</p>
<pre><code>"80547CFB4EBA5DF15B585728"
</code></pre>
<p>这是6个中国符号的序列。<br/>
但是</p>
<pre><code>u"Knödel"
</code></pre>
<p>转换为</p>
<pre><code>"4B6EF664656C"
</code></pre>
<p>我现在需要的是一个函数来将它转换回原来的unicode。中文符号似乎有一个2字节的表示,而第二个例子有1字节的表示所有字符。所以我不能对每个1字节或2字节的块使用unichr()。</p>
<p>我已经试过了</p>
<pre><code>binascii.unhexlify(hex_str)
</code></pre>
<p>但这似乎是逐字节转换并返回字符串,而不是unicode。我也试过</p>
<pre><code>binascii.unhexlify(hex_str).decode(...)
</code></pre>
<p>有不同的格式。没有原始的unicode字符串。</p>
<p>提前多谢!</p>