我正在通过套接字连接发送修复消息并在 python 客户端中接收。我知道有一个 SOH 分隔数据中的每个名称=值对。但是打印时的数据(作为字符串)不显示 SOH。出现问题是因为我希望能够显示“|” 或者我无法在正则表达式中判断各个字段的边界是什么。我在收到的字符串上查看了 decode('hex'), decode('uu') ,但没有取得多大成功。此外,打包/解包要求您提供格式字符串(对于每种类型的修复,我都必须这样做)。
我正在为客户端使用 Twisted ClientFactory。
有什么建议么?
后续问题:我使用 repr 并将其传递给函数以将 '\x01' 替换为 '|'。现在当我直接传入从网络收到的数据时,替换似乎没有任何影响。但是,当我复制输出并将其作为字符串文字传递给同一个函数时。它的行为符合预期(将 '\x01' 替换为 '|')。我还尝试使用 re.sub,结果完全相同(作为字符串文字传入时有效,但直接从网络传入时无效)。我还将网络中的值打印到文件中,并使用 vi hex editor 与字符串文字进行比较。它没有显示任何差异。
一些附加信息:当我打印文件中的值并将其读回时,我无法在“\x01”上使用查找,这意味着替换也不起作用(它不起作用)。当我尝试将其转换为字节数组时,当我遍历字节数组时,似乎每个 '\' 、 'x' 、 '0' 、 '1' 都被解释为不同的字节。这很奇怪。'\x01' 要么是字符串,要么不是字符串,而是十六进制。
有什么建议么?
谢谢