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

Python3如何去除Socket二进制流末尾的\x01字符?

Python3 移除二进制流末尾的\x01字符

你拿到的是FIX协议格式的二进制消息,末尾的\x01是字段分隔符,要移除它可以用这两种简单方法:

方法1:移除末尾所有连续的\x01

用bytes类型的rstrip()方法,传入要移除的二进制字符b'\x01',它会自动去掉末尾所有连续的\x01:

raw_data = b"8=FIXT.1.1\x019=000076\x0135=A\x0149=ABCD\x0156=0109\x01"
cleaned_data = raw_data.rstrip(b'\x01')
# 输出结果:b"8=FIXT.1.1\x019=000076\x0135=A\x0149=ABCD\x0156=0109"

方法2:仅移除最后一个\x01(如果存在)

如果只想去掉末尾单个\x01,不管前面有没有连续的,先判断是否以\x01结尾,再用切片截断:

raw_data = b"8=FIXT.1.1\x019=000076\x0135=A\x0149=ABCD\x0156=0109\x01"
if raw_data.endswith(b'\x01'):
    cleaned_data = raw_data[:-1]
else:
    cleaned_data = raw_data

为什么之前的脚本可能失败?

  • 误用了strip()而不是rstrip():strip()会同时移除首尾的指定字符,而你只需要处理末尾。
  • 传入了字符串而非二进制字符:比如用了'\x01'而不是b'\x01',bytes类型的方法必须接收bytes参数才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:24:57