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

Python3.6:将含SOH的FIX消息字节数组转为带^A的字符串

解决Python 3.6中FIX消息SOH分隔符转^A的问题

核心思路

直接对字节串做精准替换操作:把代表SOH的b'\x01'字节替换为b'^A'字节,再解码成字符串即可。你之前试的repr()会生成带语法标记的字符串(比如开头的b'),ord()仅用于判断单个字符的ASCII码,都不是正确的替换方式。

实现代码

# 从Socket接收的原始FIX字节数据
fix_raw_bytes = b'8=FIX.4.4\x019=65\x0135=0\x0152=20220809-21:37:06.893\x0149=TRADEWEB\x0156=ABFIXREPO\x01347=UTF-8\x0110=045\x01'

# 替换SOH分隔符为^A,再解码为UTF-8字符串
formatted_log_str = fix_raw_bytes.replace(b'\x01', b'^A').decode('utf-8')

# 写入日志文件(追加模式)
with open('fix_message.log', 'a', encoding='utf-8') as log_file:
    log_file.write(formatted_log_str + '\n')

关键说明

  1. 字节串的replace()方法直接操作二进制数据,能精准定位并替换\x01(SOH的十六进制表示)
  2. 解码用UTF-8是因为FIX消息头明确指定了347=UTF-8,保证编码一致
  3. 写入文件时指定encoding='utf-8',避免出现乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:51:14