2

我正在通过套接字连接发送修复消息并在 python 客户端中接收。我知道有一个 SOH 分隔数据中的每个名称=值对。但是打印时的数据(作为字符串)不显示 SOH。出现问题是因为我希望能够显示“|” 或者我无法在正则表达式中判断各个字段的边界是什么。我在收到的字符串上查看了 decode('hex'), decode('uu') ,但没有取得多大成功。此外,打包/解包要求您提供格式字符串(对于每种类型的修复,我都必须这样做)。

我正在为客户端使用 Twisted ClientFactory。

有什么建议么?

后续问题:我使用 repr 并将其传递给函数以将 '\x01' 替换为 '|'。现在当我直接传入从网络收到的数据时,替换似乎没有任何影响。但是,当我复制输出并将其作为字符串文字传递给同一个函数时。它的行为符合预期(将 '\x01' 替换为 '|')。我还尝试使用 re.sub,结果完全相同(作为字符串文字传入时有效,但直接从网络传入时无效)。我还将网络中的值打印到文件中,并使用 vi hex editor 与字符串文字进行比较。它没有显示任何差异。

一些附加信息:当我打印文件中的值并将其读回时,我无法在“\x01”上使用查找,这意味着替换也不起作用(它不起作用)。当我尝试将其转换为字节数组时,当我遍历字节数组时,似乎每个 '\' 、 'x' 、 '0' 、 '1' 都被解释为不同的字节。这很奇怪。'\x01' 要么是字符串,要么不是字符串,而是十六进制。

有什么建议么?

谢谢

4

2 回答 2

0

使用 '\x01' 替换似乎适用于通过网络传入的数据(而不是 repr 的输出)。我不确定是什么原因,但这符合我的要求。

于 2012-09-13T21:20:46.683 回答
0

按照 Ignacio Vazquez-Abrams 的建议打印 repr 可以解决部分问题。

于 2012-09-12T20:33:22.350 回答