Python笔记——Unicode与16进制字符串相互转换
Unicode转换方式:
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
1、Unicode字符串转换成16进制字符串:
注:在Python3.x中实现过程:
如:将’2014number中英文数字文转’这串字符串转换成16进制形式显示。
U_Str = u"2014number中英文数字文转"
""" *Function: Unicode2HexStr * Description: Unicode字符串转换为16进制字符串 *Input: Unicde_Str要转换的Unicode字符串 *Return: Hex_Str返回16进制字符串 *Others: """ def Unicode2HexStr(Unicde_Str): Hex_Str = "" for i in range(0, len(Unicde_Str)): Hex_Str += (hex(ord(Unicde_Str[i])).replace("0x","").zfill(4)) return Hex_Str print(Unicode2HexStr(U_Str))
输出结果为:
0032003000310034006e0075006d0062006500724e2d82f1658765705b5765878f6c
函数说明:ord()
ord(...)
ord(c) -> integer
Return the integer ordinal of a one-character string.
大体意思就是返回一个Unicode字符的int类型的序号,如:
‘2’这个数字字符的序号为50;
‘n’这个英文字符的序号为110;
‘中’这个中文字符的序号为20013;
与ord()相对应的函数为chr()
chr(...)
chr(i) -> Unicode character
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
意思就是将一个int类型序号转换成Unicode的字符
函数说明:hex()
hex(...)
hex(number) -> string
Return the hexadecimal representation of an integer.
>>> hex(3735928559)
"0xdeadbeef"
2、16进制字符串转换成Unicode字符串:
将上面的输出结果逆转回来:
函数如下:
str_uhex="0032003000310034006e0075006d0062006500724e2d82f1658765705b5765878f6c"
""" *Function: HexStr2Unicode * Description: 16进制字符串转换为Unicode字符串 *Input: Hex_Str 16进制字符串 *Return: Unicde_Str Unicode字符串 *Others: """ def HexStr2Unicode(Hex_Str): Unicde_Str = "" for i in range(0,len(Hex_Str)//4): chr(int(Hex_Str[i*4:i*4+4], 16)) Unicde_Str += chr(int(Hex_Str[i*4:i*4+4], 16)) return Unicde_Str print(HexStr2Unicode(str_uhex))
用到的函数:int()
class int(object)
| int(x=0) -> integer
这里采用int(x, base=16) -> integer,x为数字字符串格式
- 上一篇: mysql聚合函数和分组
- 下一篇: python“字符对应的十进制”转字符