python 16进制转字符串

2024-11-08 07:27:43
推荐回答(3个)
回答1:

你确定汉字没给错或者是16进制串没给错?

unicode字符串编辑是两位16进制表示一个汉字。所以你这个串转为python格式应该是:

u"쟫컰뻆뫳볝뎵"

所以直接:

print u"쟫컰뻆뫳볝뎵"

结果是:쟫컰뻆뫳볝뎵


这才是"请勿酒后驾驶"的16进制: '请勿酒后驾驶'

回答2:

#将16进制字符转成二进制字符
def str2byte(s):
    base='0123456789ABCDEF'
    i=0
    s = s.upper()
    s1=''
    while i < len(s):
        c1=s[i]
        c2=s[i+1]
        i+=2
        b1=base.find(c1)
        b2=base.find(c2)
        if b1 == -1 or b2 == -1:
            return None
        s1+=chr((b1 << 4)+b2)
    return s1

s = 'C7 EB CE F0 BE C6 BA F3 BC DD B3 B5'.replace(' ','') #去掉空格
s1 = str2byte(s)
print s1.decode('gbk') #以gbk编码解码输出

#结果
>>> s1
'\xc7\xeb\xce\xf0\xbe\xc6\xba\xf3\xbc\xdd\xb3\xb5'
>>> print s1.decode('gbk')
请勿酒后驾车

回答3:

你的16进制的串“C7 EB CE F0 BE C6 BA F3 BC DD B3 B5”是gbk编码的,通过以下方法可以转为字符串。

>>> s = "C7 EB CE F0 BE C6 BA F3 BC DD B3 B5"
>>> s = s.replace(" ", "")
>>> print s.decode("hex")
请勿酒后驾车