Python3套接字客户端发送和接收十六进制字符串
我被困在这个套接字客户端Python3代码中:Python3套接字客户端发送和接收十六进制字符串,python,python-3.x,sockets,hex,modbus-tcp,Python,Python 3.x,Sockets,Hex,Modbus Tcp,我被困在这个套接字客户端Python3代码中: import socket import codecs def Main(): host = '127.0.0.2' port = 502 mySocket = socket.socket() mySocket.connect((host,port)) message = codecs.encode('\x00\x00\x00\x00\x00\x06\x01\x0
import socket
import codecs
def Main():
host = '127.0.0.2'
port = 502
mySocket = socket.socket()
mySocket.connect((host,port))
message = codecs.encode('\x00\x00\x00\x00\x00\x06\x01\x04\x00\x01\x00\x02')
mySocket.send(message)
data = codecs.decode(mySocket.recv(1024))
print ('Received from server: ' + data)
mySocket.close()
if __name__ == '__main__':
Main()
它给出了错误
文件“C:\Python34\lib\encodings\utf_8.py”,第16行,解码
返回编解码器.utf_8_解码(输入,错误,真)
UnicodeDecodeError:“utf-8”编解码器无法解码位置11中的字节0xb3:无效的开始字节
我正在尝试连接到一个-Modbus/TCP-服务器
错误是什么
谢谢 这是因为它试图将
数据
转换为utf-8字符串(其中包含的一些字节无法在utf-8中表示)
如果要查看字节数组的十六进制值,可以:
Python3.5+
data = mySocket.recv(1024)
data.hex()
otherwrite
>>> import binascii
>>> data = mySocket.recv(1024)
>>> data = binascii.hexlify(data).decode()