为什么 protobuf/python 对 MessageToDict 函数中的字节字段进行 base64 编码

Why protobuf/python do base64 encode for bytes field in MessageToDict function

当我使用 json_format.MessageToDict 将 protobuf 消息转换为 python 字典时。 bytes 类型字段将成为 base64 编码。

我找到源代码: https://chromium.googlesource.com/external/github.com/google/protobuf/+/HEAD/python/google/protobuf/json_format.py#289

但是为什么 protobuf 会那样做呢?

json 不能以字节为单位保存数据。为了将字节放入 json,您需要对字节进行编码。 base64 是一种常用的方法。

顾名思义,json_format.MessageToDict,它将字节转换为 base64 编码的字符串给你。

类似问题here