2

我正在将图像从 python 后端传输到 c++ 后端。我选择了 Google protobuf,结构简单如下:

message data {
  optional string image = 1;
}

然后我使用 Python 读取图像并将其放入图像字段:

data = server_pb2.data()
data.image = (open(image_fn).read())

但是 protobuf 抱怨以下消息:

值错误:[十六进制数据] 的类型为 str,但不是 7 位 ASCII 编码。非 ASCII 字符串在添加之前必须转换为 unicode 对象。

我尝试了几种方法使数据成为 unicode,但没有成功。

也许有人以前遇到过这个问题?或者有没有更好的方法来传输图像数据?

谢谢!

4

1 回答 1

3

您应该使用bytes.proto 文件中的类型而不是string.

bytes用于任意字节序列(例如图像)。string用于一系列 UTF-8 或 ASCII 字符(例如文本)。

于 2013-05-19T00:13:15.217 回答