You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何还原Arrays.toString转换后的ByteString字节数组?

解决方案

没有现成的标准API能直接把Arrays.toString()生成的这种格式字符串转回ByteString,得自己写个解析函数,逻辑很简单:

  1. 先清理输入字符串:去掉首尾的[和],再按, (逗号加空格)分割成单个数字字符串。
  2. 把每个数字字符串转成int,再强转成byte(Java里byte是8位有符号类型,int转byte会自动截断高24位,刚好匹配原字节的正负值)。
  3. 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:22:38