DDD*_*DDD 2 python sockets hex python-3.x 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\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()
Run Code Online (Sandbox Code Playgroud)
它给出了错误
文件“C:\Python34\lib\encodings\utf_8.py”,第 16 行,在解码中返回 codecs.utf_8_decode(input, error, True) UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 11 中的字节 0xb3:无效起始字节
我正在尝试连接到Ananas - Modbus/TCP -服务器
错误是什么?
谢谢!
这是因为它尝试转换data为 utf-8 字符串(并且其中包含的某些字节无法用 utf-8 表示)。
如果您想查看字节数组的十六进制值,您可以:
Python3.5+
data = mySocket.recv(1024)
data.hex()
Run Code Online (Sandbox Code Playgroud)
奥瑟莱斯
>>> import binascii
>>> data = mySocket.recv(1024)
>>> data = binascii.hexlify(data).decode()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7533 次 |
| 最近记录: |