Python TCP接收

Python TCP接收,python,encoding,tcp,decode,Python,Encoding,Tcp,Decode,当我深入到我的项目中时,我遇到了这个我似乎无法解决的问题,就这样。当我向一个盒子发送代码时,它会发回一个命令,然后我对它进行解码,我能够做到这一点。但我遇到的问题是,当我用十六进制代码返回响应时,它似乎把它放在括号中,每个十六进制代码都被放在引号周围,这会搞乱我的程序。这是我的密码 TX = b"\x7E\x00\x0C\x01\x00\xA5\xBD\x00\x7E\x01\x00\x40\x2D\x00\x3F\x71" T_X = 'TX = ' R_X = 'RX = ' BUFFE

当我深入到我的项目中时,我遇到了这个我似乎无法解决的问题,就这样。当我向一个盒子发送代码时,它会发回一个命令,然后我对它进行解码,我能够做到这一点。但我遇到的问题是,当我用十六进制代码返回响应时,它似乎把它放在括号中,每个十六进制代码都被放在引号周围,这会搞乱我的程序。这是我的密码

TX = b"\x7E\x00\x0C\x01\x00\xA5\xBD\x00\x7E\x01\x00\x40\x2D\x00\x3F\x71"

T_X = 'TX = '
R_X = 'RX = '

BUFFER = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
b = 1
while b == 1:
    s.send(TX)        
    time.sleep(1)

    __ByteStr2 = repr(s.recv(BUFFER))
    xString = __ByteStr2[2:-1]
    __bytStr = ByteToHex(xString)

    newString = __bytStr[48:-6]

    print (type(__ByteStr2))
    print (__bytStr)
    print (newString)
主要的问题是代码输出是这样的

['7E', '00', '16', '81', 'A5', 'BD', '35', '02', '7E', '00', '01', 'C7', '2D', '0A', '00', '11', '40', '12', '00', '00', '00', '00', '00', '00', 'F7', '0E']
7E 00 16 81 A5 BD 35 02 7E 00 01 C7 2D 0A 00 11 40 12 00 00 00 00 00 00 F7 0E
代码实际上应该像这样输出所有内容

['7E', '00', '16', '81', 'A5', 'BD', '35', '02', '7E', '00', '01', 'C7', '2D', '0A', '00', '11', '40', '12', '00', '00', '00', '00', '00', '00', 'F7', '0E']
7E 00 16 81 A5 BD 35 02 7E 00 01 C7 2D 0A 00 11 40 12 00 00 00 00 00 00 F7 0E

我真的不知道为什么它会这样做。。任何帮助都会非常棒:)

您将字符串与字符串表示混淆了。移除
recv
周围的
repr

如果要打印出包含“不可打印”字符的字符串,只需
repr
。请看这里的区别:

>>> print "hello\nworld"
hello
world
>>> print repr("hello\nworld")
'hello\nworld'
因此,所有的索引魔法、字节到十六进制的转换等都是不必要的

此外,你在网络上做错了
recv
不能保证接收您期望的所有数据,因此您需要遵循协议。你不会说“盒子”是什么——如果是你自己做的,我建议使用zeromq或nanomsg。如果是第三方的东西,文档应该包含提示。

Thank:)这似乎可以解决问题