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

如何在Java中为字节数组对应的十六进制字符串前添加"03"前缀

在字节数组前添加前缀字节以修改十六进制输出

嘿,这个需求其实很好实现——本质上你需要给原始字节数组的最前面插入一个值为0x03的字节,因为Numeric.toHexString()是直接把字节数组的每个字节按顺序转成十六进制字符拼接的,只要字节数组开头是0x03,输出的字符串自然就会带上03前缀了。

方法一:用System.arraycopy手动复制(兼容性好)

这是最基础的方式,适合所有Java版本:

// 你的原始字节数组
byte[] initial = new byte[]{0x6b, 0x61, 0x64, 0x75, 0x6d};

// 创建长度+1的新数组,用来容纳前缀字节和原数组内容
byte[] prefixedArray = new byte[initial.length + 1];

// 第一个位置放入0x03字节
prefixedArray[0] = 0x03;

// 把原数组的内容复制到新数组的第2个位置开始(索引1)
System.arraycopy(initial, 0, prefixedArray, 1, initial.length);

// 现在输出就会得到0x036b6164756d
System.out.println(Numeric.toHexString(prefixedArray));

方法二:用ByteBuffer简化代码(Java 8+推荐)

如果你的项目用Java 8及以上,用ByteBuffer可以写出更简洁的代码:

byte[] initial = new byte[]{0x6b, 0x61, 0x64, 0x75, 0x6d};

// 分配足够的空间,先放入前缀字节,再放入原数组,最后转成字节数组
byte[] prefixedArray = ByteBuffer.allocate(initial.length + 1)
                                .put((byte) 0x03)
                                .put(initial)
                                .array();

System.out.println(Numeric.toHexString(prefixedArray));

关键注意点

Java的数组长度是固定的,你不能直接在原数组上扩容或插入元素,必须创建一个新的数组来容纳新增的前缀字节和原数组内容。只要新数组的第一个字节是0x03,Numeric.toHexString()就会把它转换成03放在输出字符串的最前面,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者simply_simple

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:54:06