我正在使用 com.google.protobuf.ByteString 并尝试将其序列化,以便我可以将其存储为字符串。
String value = Arrays.toString(byteString.toByteArray());
现在我想反转它并将其改回 byteString。
byte[] byteArray = value.getBytes(); ??
ByteString.copyFrom(byteArray);
我怀疑这是否有效。使用上面第一行的字符串格式的 ByteString 示例如下所示 [0, 0, 0, 0, 1, -118, 7, -52, 0, 0]。没关系,我不介意存储这个。看起来这些字符完全用数字表示。现在我想反转它,以便我可以重新创建一个 ByteString。问题是我不知道如何将其转换回字节数组并撤消 Arrays.toString(byte[])。
我最初不知道字节数组的编码。它来自 saleforce 重播 ID。我也没有一种简单的方法将其存储为字节数据。是否有一些奇特的 Arrays.UndoString() 或者我必须编写自己的函数?
Arrays.toString
并不是真的意味着要撤消。当然你可以为它编写一个解析器。但如果有其他选择,你为什么还要这么做呢?
替代方案 1:Base64
使用
import java.util.Base64;
Base64.getEncoder().encodeToString(yourarray)
将数组转换为字符串并且
Base64.getDecoder().decode(yourstring)
取回数组。
替代方案 2:JSON
产生更具可读性的字符串,但需要一个有很多外部库。因此我不会在这里给出任何示例代码。