You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现代理对与十六进制的相互转换?

处理多码点字符的十六进制与双向转换问题

像👩🏻这类带修饰的表情符号,本质是多个Unicode码点的组合序列(比如👩🏻由基础人物码点U+1F469和肤色修饰符码点U+1F3FB组成),而ord()函数只能接收长度为1的单个码点字符,直接传入多码点字符串就会触发TypeError。

以下是针对单/多码点字符通用的双向转换方案:

1. 字符转十六进制

遍历字符串中的每个字符,分别获取其码点的十六进制表示,再组合起来:

# 多码点字符转十六进制列表
target_char = "👩🏻"
hex_codes = [hex(ord(c)) for c in target_char]
print(hex_codes)  # 输出: ['0x1f469', '0x1f3fb']

# 或者转为空格分隔的十六进制字符串
hex_str = ' '.join(hex_codes)
print(hex_str)  # 输出: '0x1f469 0x1f3fb'

2. 十六进制转回字符

将十六进制字符串按空格拆分,每个十六进制值转为整数后生成对应字符,最后拼接成完整字符串:

# 十六进制字符串转回字符
hex_str = '0x1f469 0x1f3fb'
result_char = ''.join([chr(int(hx, 16)) for hx in hex_str.split()])
print(result_char)  # 输出: '👩🏻'

封装通用函数

如果需要频繁处理,可以封装成通用函数,同时兼容单码点和多码点字符:

def char_to_hex(char: str) -> str:
    """将任意字符(单/多码点)转为空格分隔的十六进制字符串"""
    return ' '.join([hex(ord(c)) for c in char])

def hex_to_char(hex_str: str) -> str:
    """将空格分隔的十六进制字符串转回对应字符"""
    return ''.join([chr(int(hx, 16)) for hx in hex_str.split()])

# 测试单码点表情
print(char_to_hex("😀"))  # 输出: '0x1f600'
print(hex_to_char('0x1f600'))  # 输出: '😀'

# 测试多码点表情
print(char_to_hex("👩🏻"))  # 输出: '0x1f469 0x1f3fb'
print(hex_to_char('0x1f469 0x1f3fb'))  # 输出: '👩🏻'

内容的提问来源于stack exchange,提问作者radiantsoup0827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:18:10