我从tcp客户端获取字节为:
b'\xaa\x01\x00v\x07\x80]\xaf\xf4\x99\x00\x06\x1a\x80\x00\x00Cg\xb0H\xbf<\xe4XBHt\xbf\xbe\xff\xdc\x00AO{\xb3B\x9b/\x91A \x00\x00\x00\x00\x00\x00<\xe7\xd5g\x00\x00\x00\x00<\xa9\x93\x0c\x00\x00\x00\x00<\x11\xd1N\x00\x00\x00\x00;\xe2\x19e\x00\x00\x00\x00;>\r\xed\x00\x00\x00\x00:\xf9\tl\x00\x00\x00\x00;\x93t\xbc=\x190\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00N\xaf'
b'\xaa\x01\x00v\x07\x80]\xaf\xf4\x99\x00\x07\xa1 \x00\x00Cg\x9f \xbf*\xa3\xa0BHuy?5\xa4\x00AO{\xb3B\x9b/\x91A \x00\x00\x00\x00\x00\x00<\xe7\xd5g\x00\x00\x00\x00<\xa9\x93\x0c\x00\x00\x00\x00<\x11\xd1N\x00\x00\x00\x00;\xe2\x19e\x00\x00\x00\x00;>\r\xed\x00\x00\x00\x00:\xf9\tl\x00\x00\x00\x00;\x93t\xbc=\x190\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\r'
当我使用以下方法解码时:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1460)
if not data:
break
print(data)
print(data.decode())
它显示错误为:
UnicodeDecodeError:'utf-8'编解码器无法解码位置0处的字节0xaa:无效的起始字节
有人可以帮我吗?
答案 0 :(得分:0)
查看转义序列,它看起来像十六进制数据。 您可以转换删除转义序列,如下所示
import binascii
c = binascii.hexlify(data)
然后由您自己决定如何解释数据。
例如,您可以将十六进制字符串转换为int数组。
[int(c[i:i+2],16) for i in range(0,len(c),2)]