将unicode字符串转换为十六进制表示

2024-05-16 07:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把unicode字符串转换成它的十六进制表示。 例如,u'\u041a\u0418\u0421\u0410'应该转换为"\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90"。我尝试了下面的代码(Python2.7):

unicode_username.encode("utf-8").encode("hex")

但是,我得到一个字符串:

'd09ad098d0a1d090'

有什么建议可以让我得到\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90


Tags: 字符串代码unicodeusernameutfencodex98xd0
2条回答

当您执行string.encode('utf-8')时,它将变为十六进制表示法。

但如果打印出来,就会得到原始的unicode字符串。

如果您想要十六进制表示法,可以通过repr()函数得到它:

>>> print u'\u041a\u0418\u0421\u0410'.encode('utf-8')
КИСА
>>> print repr(u'\u041a\u0418\u0421\u0410'.encode('utf-8'))
'\xd0\x9a\xd0\x98\xd0\xa1\xd0\x90'

您还可以尝试:

print "hex_signature :  ",'\\X'.join(x.encode("hex") for x in signature)

join函数与分隔符'\X'一起使用,以便为每个字节到十六进制的转换插入\X。连接函数是为循环中变量签名的每个字节完成的。所有内容都是连接/连接和打印的。

相关问题 更多 >