python3 汉字转十六进制unicode

来源:互联网 发布:中宏数据库 讲座 编辑:程序博客网 时间:2024/05/22 06:40

最近遇到个需求,在python上面把汉字转成unicode字符用十六进制表示,方便存进byte数组中进行传输,查了一堆互转的资料,最后还是乱打乱撞做出来了,记录一下转换步骤。

s = "高德路"# 把字符串s编码成unicodest = s.encode('unicode_escape')>>> print(st)b'\\u9ad8\\u5fb7\\u8def'# 把字符串解码成utf-8,得到unicode的字符串st = st.decode("utf-8")>>> print(st)\u9ad8\u5fb7\u8def# 把字符串中的\u替换掉,得到十六进制unicode字符串st = st.replace("\\u", "")>>> print(st)9ad85fb78def# 获取字符串前4位,代表字符串中的第一个字m_b = st[:4]>>> print(m_b)9ad8# 把十六进制字符串转为int类型数字,可直接存入字符数组中# 这里需要注意的是一个汉字需要2个字节存放# 把汉字存放的时候需要把一个字拆开两位转换存放# 修改上一步操作m_b = st[:2]即可拿到前两位m_c = int(m_b, 16)>>> print(m_c)39640# 把int转成十六进制m_d = hex(m_c)>>> print(m_d)0x9ad8

以上就是把汉字转成十六进制unicode的步骤,逆向转换把十六进制转为汉字的步骤如下

# 通过刚刚转换的步骤知道了"高"这个字转为整形是39640test = 39640# 把int类型转成十六进制h_t = hex(test)>>> print(h_t)0x9ad8# 去掉十六进制前两位0x,替换为\u开头的字符串h_t = "\\u" + h_t[2:]>>> print(h_t)\u9ad8# 把字符串编码成utf-8h_st = h_t.encode('utf-8')>>> print(h_st)b'\\u9ad8'# 最后用unicode解码,得到对应的汉字h_st = h_st.decode("unicode_escape")>>> print(h_st)高
0 0