我正在开发一个将所有数据存储在键/值对中的项目。键和值都是字符串。改变它超出了当前的范围。每个数据概念都由一个 protobuf 消息表示。
因此,我必须将 protobuf 消息存储为字符串。将消息存储为 message.toByteString().toString() 就足够了吗?或者我应该对字节 [] 进行编码,例如使用 Base32 编码?
编辑
使用 ByteString 进行持久性似乎不起作用:
Message m = ...;
ByteString s = m.toByteString();
ByteString s_ = ByteString.copyFromUtf8(s.toStringUtf8());
Message.PARSER.parseFrom(s_);
解析协议消息时,输入意外在字段中间结束。这可能意味着输入被截断或者嵌入的消息误报了它自己的长度。
那么您是否建议在 m.toByteArray() 上使用 Base32 编码?请注意,将数据类型从 string 更改为 byte[] 目前超出了范围。
谢谢!