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

问题描述 投票:0回答:3

我想将 unicode 字符串转换为其十六进制表示形式。 例如,

u'\u041a\u0418\u0421\u0410'
应转换为
"\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90"
。我尝试了下面的代码(python 2.7):

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

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

'd09ad098d0a1d090'

有什么建议我可以得到

\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90
吗?

python python-2.7 unicode
3个回答
10
投票

当您执行

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'

1
投票

您也可以尝试:

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

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


0
投票

另一种解决方案:

result = '\\x' + 'your input string'.encode('utf-8').hex(' ').replace(' ', '\\x')
print(result)

结果:

\x79\x6f\x75\x72\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x69\x6e\x67
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.