Python中如何为十六进制字符串每隔2个字符添加空格分隔符
Python 连续十六进制字符串转空格分隔格式实现方案
核心逻辑:十六进制字符串每2个字符对应1个单字节值,只要按2位步长切分字符串,再用空格拼接即可。
方法1:纯字符串切片(无依赖,全版本兼容)
不需要引入任何第三方库或标准库,是最轻便高效的实现:
# 注意不要用str作为变量名,会覆盖Python内置字符串类型 hex_str = '02001400ce01' formatted_str = ' '.join(hex_str[i:i+2] for i in range(0, len(hex_str), 2)) print(formatted_str) # 输出: 02 00 14 00 ce 01
逻辑说明:
- 用
range(0, len(hex_str), 2)生成从0开始、步长为2的索引序列,对应每个字节的起始位置 - 每次切片取出2位长度的十六进制子串
- 调用
str.join()用空格把所有子串拼接成最终结果
方法2:使用binascii标准库(Python 3.8+支持)
如果是处理字节转换相关的场景,用标准库binascii的语义更清晰,自带分隔符参数:
import binascii hex_str = '02001400ce01' # 先把十六进制字符串转成原生字节对象,再格式化输出带分隔符的十六进制串 formatted_str = binascii.hexlify(binascii.unhexlify(hex_str), sep=' ').decode('utf-8') print(formatted_str) # 输出: 02 00 14 00 ce 01
注意事项
- 禁止使用
str作为自定义变量名,会覆盖Python内置的字符串基类,引发意料之外的报错 - 传入的原始十六进制字符串长度必须为偶数,否则切片/字节转换逻辑会抛出异常,生产环境使用建议提前做长度校验
内容的提问来源于stack exchange,提问作者HansPeterLoft
相关产品推荐
相关产品推荐

