如何在Python 3中将二进制字节转换为字符串?

2024-04-19 00:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Socket接收到服务器发送的二进制数据,服务器是用C++编写的。它发送二进制数据,如:0x10、0x20、0x18、0xAA等

在Python2中,我曾经能够接收数据并将其附加到字符串中,但现在在Python3中,我接收的是字节数组,如何将其转换为字符串?你知道吗


解码('utf-8')似乎不起作用,这是我的原始代码:

reply_string = "" while bytes_read < reply_length:
    chunk = s.recv(4096)
    reply_string += chunk.decode('utf-8')

s是一个套接字,我得到的错误是:

UnicodeDecodeError:“utf-8”编解码器无法解码位置116中的字节0xf7:起始字节无效

服务器是用C++编写的,不发送Unicode,只需读取二进制文件的内容并将其发送回客户端,以上就是客户端代码。你知道吗


Tags: 数据字符串代码服务器客户端string字节二进制
1条回答
网友
1楼 · 发布于 2024-04-19 00:24:22

假设字符串是UTF-8,那么它很简单:

try:
    binary_data.decode('utf-8', errors='strict')
except UnicodeError as e:
    # Handle the error here

这段代码应该捕获出现的任何错误,您可以从那里处理它们。你知道吗

相关问题 更多 >