1-Python - 汉字与十六进制间的转换

before

python3.9

在学习Python的进制转换时,我们知道16进制的数和其它进制的数相互转换非常方便,有内置函数可以直接拿来使用。

print("10-->2", bin(20))  # 0b10100
print("10-->8", oct(20))  # 0o24
print("10-->16", hex(20))  # 0x14

print('2-->8: ', oct(int('0b1010', 2)))  # 2-10-8
print('2-->10:', int('0b1010', 2))  # 2-10
print('2-->16:', hex(int('0b1010', 2)))  # 2-10-16
print('8-->2:', bin(int('0o12', 8)))  # 8-10-2
print('8-->10:', int('0o12', 8))  # 8-10
print('8-->16:', hex(int('0o12', 8)))  # 8-10-16
print('10-->2', bin(10))  # 10-2
print('10-->8', oct(10))  # 10-2
print('10-->16', hex(10))  # 10-16
print('16-->2:', bin(int('0xa', 16)))  # 16-10-2
print('16-->8:', oct(int('0xa', 16)))  # 16-10-8
print('16-->10:', int('0xa', 16))  # 16-10
"""
2-->8:  0o12
2-->10: 10
2-->16: 0xa
8-->2: 0b1010
8-->10: 10
8-->16: 0xa
10-->2 0b1010
10-->8 0o12
10-->16 0xa
16-->2: 0b1010
16-->8: 0o12
16-->10: 10
"""

那么问题来了,现在有个汉字,用Python打印出他的十六进制的表示形式;或者说已知一个汉字的十六进制表示形式,你给我打印出来这个汉字。
比如有这个需求:

方便的内置函数,我没查到,谁查到留个言,我只是从晚上找了篇帖子,一步一步处理,下面记录下。

汉字 >> 十六进制表示形式

# 有字符串,打印出它的16进制表示形式,即: 路 >>> 0x8def
s = "路"

# 把字符串编码为Unicode
s1 = s.encode('unicode_escape')
print(s1)  # b'\\u8def'

# 把字符串解码为utf8,得到Unicode字符串
s2 = s1.decode('utf8')
print(s2)  # \u8def

# 把字符串中的\u替换掉,得到十六进制unicode字符串
s3 = s2.replace('\\u', '')
print(s3)  # 8def

# 四位是一个汉字,我们这里正好是一个汉字,所以切不切都一样,但如果是多个汉字,就要注意每四位是一个汉字
s4 = s3[:4]
print(s4)  # 8def


# 把十六进制字符串转为int类型数字
s5 = int(s4, 16)
print(s5)  # 36335

# 把int转成十六进制
s6 = hex(s5)
print(s6)  # 0x8def

十六进制表示形式 >> 汉字

# 去掉十六进制前两位0x,替换为\u开头的字符串
s6 = "0x8def"
s7 = s6.replace('0x', '\\u')
print(s7)  # \u8def

# # 把字符串编码成utf-8
s8 = s7.encode('utf8')
print(s8)  # b'\\u8def'

# 最后用unicode解码,得到对应的汉字
s9 = s8.decode('unicode_escape')
print(s9)  # 路

参考:https://blog.csdn.net/xyq046463/article/details/58606657

posted @ 2023-02-17 15:22  听雨危楼  阅读(1279)  评论(0编辑  收藏  举报