如何在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
相关产品推荐
相关产品推荐

