Python: UTF-8十六进制转UTF-16十进制

4

我得到了一个汉字 '烷'(U+70F7),它的UTF-8(十六进制)表示为0xE7 0x83 0xB7(e783b7)。 (请参见http://www.fileformat.info/info/unicode/char/70f7/index.htm

我需要将字符串“e783b7”转换为28.919的十进制值(UTF-16十进制)。

由于我已经在解决这个问题上花费了一个小时,所以我认为询问stackoverflow会更快。

非常感谢

Dr. Cobra

1个回答

3

使用内置函数ord,像这样:

>>> print('\u70f7')
烷
>>> print(ord('\u70f7'))
28919

如果您只有一个十六进制字符串(适用于Python 2和3):
>>> s = bytearray.fromhex('e783b7').decode('utf-8')
>>> s
u'\u70f7'
>>> print(s)
烷

只用Python3吧? - Netwave
我不确定为什么今天还要使用Python 2,但在那里使用u前缀的Unicode字符串也可以工作。 - leovp
很不错,工作得非常好。而且在VFX行业中,Python2仍然是标准,令人遗憾。因此,有很多人坚持使用Python 2。 - Netwave
@DanielSanchez 标准很快就要改变了,最好做好准备;Python 2 的支持将于2020年结束...我已经在我的位置上奋斗了一段时间,并且尽可能地推动使用Python 3,只有在支持现有代码库时才使用v2,并且仍然尝试尽可能多地转换为v3 :) - Drako
太好了!运行良好!非常感谢! - Dr. John James Cobra
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接