Python 如何将字节转换为字符串,然后将相同的字符串转换回字节

Python 如何将字节转换为字符串,然后将相同的字符串转换回字节,python,string,sockets,byte,data-conversion,Python,String,Sockets,Byte,Data Conversion,我有一个软件有两个方面:客户端和服务器。 此软件中的客户端可以使用IP和端口连接到服务器,然后客户端向服务器发送命令,服务器响应 我要做的是在客户端创建一个代理,在服务器端创建一个代理,因为我希望客户端和服务器之间的所有消息都通过我构建的IM。 因此,我将客户端连接到IM侦听的本地端口。。安迪在服务器端也做了同样的事情 因此,我的即时通讯在客户端从这个软件得到的第一条消息是 b"DRPC\x02\x00\x00\x009V\xfe'\x07\x84GO\x83d\xee\x11\x8f\xb0\

我有一个软件有两个方面:客户端和服务器。 此软件中的客户端可以使用IP和端口连接到服务器,然后客户端向服务器发送命令,服务器响应

我要做的是在客户端创建一个代理,在服务器端创建一个代理,因为我希望客户端和服务器之间的所有消息都通过我构建的IM。 因此,我将客户端连接到IM侦听的本地端口。。安迪在服务器端也做了同样的事情

因此,我的即时通讯在客户端从这个软件得到的第一条消息是

b"DRPC\x02\x00\x00\x009V\xfe'\x07\x84GO\x83d\xee\x11\x8f\xb0\x8a\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\x00E\x00S\x00K\x00T\x00O\x00P\x00-\x00H\x00M\x00V\x005\x00U\x00R\x00U\x00\\\x00C\x00C\x00E\x00\x00\x00\x10\xce\xff\x0b\xd4\x01\x00\x00\x00\x00\x00\x00\xfd\x7f\x00\x00\x10\xce\xff\x0b\xd4\x01\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00~\xd1\xe8\xb6\xd1]\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xcd\xa1\x12\xfd\x7f\x00\x00\xe0F\xfd\x99\xf7\x7f\x00\x00"
我假设是一个字节。 要发送它,我使用str(somethin)

在服务器端,我得到这个字符串,然后我必须将它以字节格式发送到服务器的软件。 但是当我发送它时,由于错误,我没有收到任何响应, 我试过以下方法:

1) 按原样发送此字符串-我得到的错误是它需要字节而不是字符串

2) 尝试删除前缀b“和后缀,然后使用将该字符串转换为字节

bytes(str,'utf-8)
但是这个命令的输出是

b"DRPC\\x02\\x00\\x00\\x009V\\xfe'\\x07\\x84GO\\x83d\\xee\\x11\\x8f\\xb0\\x8a\\xc8\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00D\\x00E\\x00S\\x00K\\x00T\\x00O\\x00P\\x00-\\x00H\\x00M\\x00V\\x005\\x00U\\x00R\\x00U\\x00\\\\\\x00C\\x00C\\x00E\\x00\\x00\\x00\\xd0\\xcf\\xff\\x0b\\xd4\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\xfd\\x7f\\x00\\x00\\xd0\\xcf\\xff\\x0b\\xd4\\x01\\x00\\x004\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd4\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00~\\xd1\\xe8\\xb6\\xd1]\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00`\\xcd\\xa1\\x12\\xfd\\x7f\\x00\\x00\\xe0F\\xfd\\x99\\xf7\\x7f\\x00\\x00"
这和我在服务器端得到的字节不同

关于如何发送/接收这些信息而不出错,有什么建议吗


顺便说一句,我试图手动连接到服务器端的软件(通过在本地创建套接字并向他发送第一个命令),我得到了响应,因此我可以假设问题在于将字节转换为字符串,反之亦然。

在发送和接收之前尝试对字符串进行编码和解码

例如:

发送

userMessage = "String"
    s.send(userMessage.encode('utf-8'))
userMessage被编码成字节,然后发送到服务器

接收

 data = conn.recv(bufferSize)
        if not data: break
        messageRecv = data.decode('utf-8')
服务器接收数据,然后通过解码数据消息来创建字符串messageRecv。两者都使用utf-8


如果是较大的项目,如列表;您需要使用pickle.dumps/pickle.loads

这种技术不是叫做序列化吗?我认为您可以使用str.encode(),而不使用utf-8。