【发布时间】:2021-10-21 21:00:41
【问题描述】:
我使用 python connect A rfid device by tcp socket.
这是基本代码
HOST = '192.168.1.159'
PORT = 4001
from socket import *
def main():
tcp_client_socket = socket(AF_INET,SOCK_STREAM)
tcp_client_socket.connect((HOST,PORT))
while True:
recv_data = tcp_client_socket.recv(10240)
if recv_data:
print(recv_data)
else:
break
tcp_client_socket.close()
if __name__ == '__main__':
main()
然后我会收到这样的值
b'\xa0\x13\x01\x89\x1c4\x000\x083\xb2\xdd\xd9\x01@\x00\x00\x00\xa4pK'
但是 tcp socket 测试工具会收到这样的值
A0 13 01 89 1C 34 00 30 08 33 B2 DD D9 01 40 00 00 00 A4 70 4B
检查突出显示部分。
我喜欢
print(recv_data.decode())
然后接收
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 0: invalid start byte
我不知道如何解决这个问题。有人可以帮忙吗?请。
【问题讨论】:
-
如果字节字符串在可打印的 ASCII 范围内,默认显示会显示一个 ASCII 字符。所以
b'\x34' == b'4'和b'\x40' == b'@'。它只是一个 display 表示。但我看到你发现.hex()给你一个十六进制表示。无论如何接收到的字节都是一样的。