Python中如何实现16进制转义

非 ASCII Unicode 字符可以以十六进制转移(\xNN )编写到一个字符串中。
请问程序如何写呢?
谢谢
Python中如何实现16进制转义

5 回复

就这么写


在Python里处理16进制转义,主要看你是要解析字符串里的\x转义还是生成这种格式。

1. 解析16进制转义字符(字符串 -> 实际值)encode('latin-1').decode('unicode_escape')最直接:

escaped_str = r"Hello\x20World\x21"  # 原始字符串,\x20是空格,\x21是!
decoded_str = escaped_str.encode('latin-1').decode('unicode_escape')
print(decoded_str)  # 输出: Hello World!

2. 生成16进制转义(实际值 -> 转义字符串)repr()或者手动格式化:

text = "Hello World!"
# 方法1:用repr(),但会包含外层的引号
escaped1 = repr(text.encode('utf-8'))[2:-1]  # 去掉b'和'
print(escaped1)  # 输出: Hello\x20World\x21

# 方法2:手动转换非ASCII/控制字符
def to_hex_escape(s):
    return ''.join(f'\\x{ord(c):02x}' if ord(c) < 32 or ord(c) > 126 else c for c in s)
print(to_hex_escape(text))  # 输出: Hello\x20World\x21

3. 字节串的16进制表示 如果处理的是bytes,直接用hex()

data = b"Hello World!"
print(data.hex())  # 输出: 48656c6c6f20576f726c6421
# 加空格分隔
print(' '.join(f'{b:02x}' for b in data))  # 输出: 48 65 6c 6c 6f 20 57 6f 72 6c 64 21

简单总结:解码用unicode_escape,编码用repr()或手动格式化,字节用hex()

你的意思是,有一段\x 转义的字符串,你要转换成 bytes?

完全不知道在说什么,Orz,我猜是这个意思?

python3<br>s = "Hello\n 中文\nWorld"<br>ss = ''.join('\\x%02X' % b for b in s.encode('utf-8'))<br>print(ss)<br>

当然用键盘直接敲\xNN 啊……对,不要用马克笔往屏幕上画

回到顶部