解码来自tcp客户端的字节



我从tcp客户端获取字节,如下所示:

b'xaax01x00vx07x80]xafxf4x99x00x06x1ax80x00x00Cgxb0Hxbf<xe4XBHtxbfxbexffxdcx00AO{xb3Bx9b/x91A x00x00x00x00x00x00<xe7xd5gx00x00x00x00<xa9x93x0cx00x00x00x00<x11xd1Nx00x00x00x00;xe2x19ex00x00x00x00;>rxedx00x00x00x00:xf9tlx00x00x00x00;x93txbc=x190xbex00x00x00x00x00x00x00x00x00x00x00x00Nxaf'
b'xaax01x00vx07x80]xafxf4x99x00x07xa1 x00x00Cgx9f xbf*xa3xa0BHuy?5xa4x00AO{xb3Bx9b/x91A x00x00x00x00x00x00<xe7xd5gx00x00x00x00<xa9x93x0cx00x00x00x00<x11xd1Nx00x00x00x00;xe2x19ex00x00x00x00;>rxedx00x00x00x00:xf9tlx00x00x00x00;x93txbc=x190xbex00x00x00x00x00x00x00x00x00x00x00x00x1cr'

当我解码这个使用:

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:无效的起始字节

有人能帮我吗?

查看转义序列,它看起来像十六进制数据。您可以转换并删除下面显示的转义序列

import binascii
c = binascii.hexlify(data)

那么,如何解释这些数据就取决于你了。

例如,您可以将十六进制字符串转换为int数组。

[int(c[i:i+2],16) for i in range(0,len(c),2)]

请参阅如何将十六进制str转换为int数组

相关内容

最新更新