Java中如何还原Arrays.toString转换后的ByteString字节数组?
解决方案
没有现成的标准API能直接把Arrays.toString()生成的这种格式字符串转回ByteString,得自己写个解析函数,逻辑很简单:
- 先清理输入字符串:去掉首尾的
[和],再按,(逗号加空格)分割成单个数字字符串。 - 把每个数字字符串转成int,再强转成byte(Java里byte是8位有符号类型,int转byte会自动截断高24位,刚好匹配原字节的正负值)。
- 用
ByteString.copyFrom()把生成的byte数组转成目标类型。
直接上代码示例:
import com.google.protobuf.ByteString; import java.util.Arrays; public class ByteStringConverter { public static ByteString parseArraysToString(String str) { // 处理输入字符串,提取数字部分 String[] numTokens = str.substring(1, str.length() - 1).split(", "); byte[] result = new byte[numTokens.length]; for (int i = 0; i < numTokens.length; i++) { int num = Integer.parseInt(numTokens[i]); result[i] = (byte) num; } return ByteString.copyFrom(result); } // 测试你的示例输入 public static void main(String[] args) { String inputStr = "[0, 0, 0, 0, 1, -118, 7, -52, 0, 0]"; ByteString restored = parseArraysToString(inputStr); // 验证还原是否正确 System.out.println(Arrays.toString(restored.toByteArray())); // 输出应该和输入字符串的内容一致:[0, 0, 0, 0, 1, -118, 7, -52, 0, 0] } }
如果需要更健壮的实现,可以加一些输入校验,比如检查字符串是否以[开头、]结尾,分割后的每个token是否都是合法整数,避免格式错误导致的异常。
内容的提问来源于stack exchange,提问作者coloradoman
相关产品推荐
相关产品推荐

