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

Python字节串疑问:含可见字符的字节串解析与追加需求

Python字节串中可见字符的原理及追加数据方法

一、为什么字节串里会出现可见字符

Python显示字节串时,会自动把可打印ASCII字符(比如字母、数字、常用符号)直接显示成对应的字符,而非统一用\xhh的十六进制转义格式。举几个你例子里的对应关系:

  • 字节0x48对应ASCII的'H',所以显示为H
  • 字节0x51对应ASCII的'Q',所以显示为Q
  • 字节0x49对应ASCII的'I',所以显示为I
  • 字节0x27对应ASCII的单引号',所以直接显示'

你用hex()得到的十六进制串已经验证了这一点:所有可见字符的位置,对应的十六进制值就是该字符的ASCII码。字节串本质还是二进制数据,这种显示方式只是Python为了可读性做的优化,完全不影响数据本身的内容。

二、向字节串追加数据的几种方法

Python里bytes是不可变类型,所以追加数据需要生成新的字节串,常用方式有以下三种:

1. 直接用+运算符拼接

这是最直观的方式,直接把原字节串和要追加的字节数据相加:

original_bytes = b"H\x00\x84\xffQ\x00\xa6\xff+\x00\x96\xff\xc2\xffI\xff\xa5\xff'\xff\x8a\xff\x19\xff\x19\xff\xf6\xfe\xb0\xfe\xc7\xfeJ\xfel\xfe\xf8\xfd+\xfe\xef\xfd:\xfe\xc3\xfd*\xfe_\xfd\xdf\xfd\n\xfd\xa3\xfd\xc6\xfcq\xfd\xbd\xfc?\xfd"
# 追加单个字节(比如0xAB)
new_bytes = original_bytes + b'\xab'
# 追加多个可见字符组成的字节串
new_bytes2 = original_bytes + b'abc123'
# 追加十六进制形式的字节序列
new_bytes3 = original_bytes + b'\x10\x20\x30'

2. 使用bytes.join()批量拼接

如果需要合并多个字节片段,join的效率更高:

# 把原字节串和多个追加片段放在列表里
parts = [original_bytes, b'\x00\x01', b'hello']
# 用空字节串拼接所有片段
new_bytes = b''.join(parts)

3. 用bytearray实现可变操作

如果需要频繁修改字节数据(不止一次追加),可以先转成bytearray(可变字节数组),操作完再转回bytes:

# 把原字节串转成可变的bytearray
byte_arr = bytearray(original_bytes)
# 追加单个字节
byte_arr.append(0xCD)
# 追加多个字节
byte_arr.extend(b'\xef\x0f')
# 转回不可变的bytes类型
new_bytes = bytes(byte_arr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:17:03