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

时间:2017-01-02 01:53:00

标签: python python-2.7 unicode

我想将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

2 个答案:

答案 0 :(得分:6)

当您执行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 :(得分:0)

您也可以尝试:

$postcodes = ['SO30 0NG', 'SO30 OTD', 'SO31 1TG', 'RG51 5HG', 'RG51 7GH'];
$grouped = [];
foreach ($postcodes as $pc) {
    $group = explode(" ", $pc);
    $grouped[$group[0]][] = $group[1];
}

var_dump($grouped)

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