2024-09-27 01:30:19 发布
网友
我知道如何从u'\u4f60\u597d'得到这个'4f60597d'
>>> u_str= u'你好' >>> repr(u_str).replace('\u', '')[2:-1] '4f60597d'
但是如果字符串中有一些ascii:
这不是我想要的结果。在
我希望可以得到这样的输出:003100324f60597d
003100324f60597d
你能告诉我吗?在
您可以使用ord()为每个字符和格式获取整数代码点,而不是:
ord()
''.join(format(ord(c), '04x') for c in u_str)
演示:
或者您可以将其编码为UTF-16(big-endian)并对结果使用^{};这可能是更快的选择:
>>> from binascii import hexlify >>> hexlify(u_str.encode('utf-16-be')) '003100324f60597d'
后者还处理BMP之外的字符,每个码位需要4个字节,这将使用UTF-16代理项对进行编码:
>>> hexlify(u'\U0001F493'.encode('utf-16-be')) 'd83ddc93'
您可以使用
ord()
为每个字符和格式获取整数代码点,而不是:演示:
^{pr2}$或者您可以将其编码为UTF-16(big-endian)并对结果使用^{} ;这可能是更快的选择:
^{3}$演示:
后者还处理BMP之外的字符,每个码位需要4个字节,这将使用UTF-16代理项对进行编码:
相关问题 更多 >
编程相关推荐