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) # 路