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

Python 3.5中如何将十六进制数原样转为字符串而非Unicode字符?

当然可以实现!

在Python 3.5里,完全能满足你把十六进制转义的字符(比如'\xff')转换成对应的十六进制字符串(比如"ff"),而不是解析成Unicode字符的需求。下面给你几种实用的方法:

方法1:利用ord()和格式化字符串

对于单个字符,你可以先用ord()获取它的Unicode码点,再通过格式化字符串转换成两位小写的十六进制字符串:

char = '\xff'
hex_str = '{:02x}'.format(ord(char))
print(hex_str)  # 输出: ff

如果需要大写的十六进制(比如"FF"),把格式符改成'{:02X}'就行。要是处理多个字符,可以用生成器表达式拼接:

s = '\xff\x00\x41'
hex_str = ''.join('{:02x}'.format(ord(c)) for c in s)
print(hex_str)  # 输出: ff0041

方法2:转成字节后用hex()方法

Python 3.5已经新增了bytes.hex()方法,非常适合这个场景。你可以先把字符串用latin-1编码转成字节(latin-1是单字节编码,完美覆盖0-255的范围,不会出现编码错误),再调用hex()得到十六进制字符串:

char = '\xff'
hex_str = char.encode('latin-1').hex()
print(hex_str)  # 输出: ff

处理多字符更简单,直接对整个字符串编码后调用hex():

s = '\xff\x00\x41'
hex_str = s.encode('latin-1').hex()
print(hex_str)  # 输出: ff0041

方法3:使用binascii模块

binascii模块里的hexlify()函数也能完成这个任务,它会把字节转换成十六进制字节串,最后解码成普通字符串就行:

import binascii

char = '\xff'
hex_bytes = binascii.hexlify(char.encode('latin-1'))
hex_str = hex_bytes.decode('ascii')
print(hex_str)  # 输出: ff

这些方法都在Python 3.5里完全可用,你可以根据自己的需求选择最顺手的一种~

内容的提问来源于stack exchange,提问作者M. Gruber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:38