Unicode与16进制字符串相互转换

本文介绍了如何使用Python进行Unicode字符串与16进制字符串之间的转换。通过`ord()`函数获取Unicode字符的整数序号,然后使用`hex()`将其转换为16进制字符串。相反,可以通过将16进制字符串转换为整数,再用`chr()`函数还原为Unicode字符。提供的两个函数`Unicode2HexStr`和`HexStr2Unicode`实现了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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=10) -> integer

这里采用int(x, base=16) -> integer,x为数字字符串格式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值