我通过套接字连接发送修复消息并在python客户端中接收。 我知道在数据中有一个SOH分隔每个名称=值对。 但是打印时的数据(作为字符串)并不显示SOH。问题出现是因为我希望能够显示'|'或者我无法在正则表达式中说出,各个字段的边界是什么。 我已经在收到的字符串上看了解码('hex'),解码('uu'),没有太大的成功。 打包/解压缩还要求您提供格式字符串(我必须为每种类型的修复程序执行此操作)。
我正在为客户端使用Twisted ClientFactory。
有什么建议吗?
跟进问题: 我使用repr并将其传递给函数以用'|'替换'\ x01'。 现在,当我直接传入从网络收到的数据时,替换似乎没有任何影响。但是,当我复制输出并将其作为字符串文字传递到同一个函数中时。它的行为与预期一致(用'|'替换'\ x01')。 我也尝试使用re.sub,结果完全相同(当作为字符串文字传入时工作,但直接从网络传入时不工作)。 我还将网络中的值打印到一个文件中,并使用vi hex编辑器与字符串文字进行比较。它没有透露任何差异。
其他一些信息: 当我从文件中打印值并将其读回时,我无法在'\ x01'上使用find,这意味着替换也不会起作用(它没有)。 当我尝试将其转换为字节数组时,当我遍历字节数组时,似乎每个'\','x','0','1'被解释为不同的字节。这很奇怪。 '\ x01'是字符串或不是字符串,是十六进制。
有什么建议吗?
感谢
答案 0 :(得分:0)
根据Ignacio Vazquez-Abrams的建议打印出repr,解决了部分问题。
答案 1 :(得分:0)
似乎使用'\ x01'替换来自网络上的数据(而不是repr的输出)。我不确定原因是什么,但这符合我的要求。