将字符串与Ascii字符(STX,ETX)组合起来与一次写入字符串不同

时间:2012-05-03 07:48:20

标签: python

我正在通过TCP套接字进行API集成。该协议要求每条消息以STX(\ x02)开头,以ETX(\ x03)结束。

当我执行以下操作时,服务器会按预期做出反应:

s.send("\x02Message\x03")

如果我构建这样的消息:

msg = "Message"
msg = "\x02" + msg + "\x03"
s.send(msg)

我的理解应该是一样的,服务器没有按预期做出反应。我错过了什么?

(我在OS-X上运行Python 2.6.2,如果这有任何区别的话)

2 个答案:

答案 0 :(得分:0)

是否适用于:

msg = "\x02Message\x03"
s.send(msg)

在某些情况下,我在send命令中写入字符串或将字符串传递给方法时存在差异。

或者结果如下:

msg = str("\x02" + msg + "\x03")
s.send(msg)

答案 1 :(得分:0)

在python中将字符串添加在一起时,组合的字符串之间会添加空格。这可能是问题吗?

  

msg =“消息”

     

味精=“ \ x02” +味精+“ \ x03”

     

结果:“ \ x02消息\ x03”

我建议使用:

  

msg =''.join('\ x02',消息,'\ x03')