将字节前置到字节数组

时间:2012-07-04 03:28:18

标签: java

我需要在字节数组的开头添加字符串“00”或字节0x00吗?我尝试使用for循环但是当我将其转换为十六进制时,它不会显示在前面。

1 个答案:

答案 0 :(得分:6)

字符串“00”与转换为字节时的数字0x00不同。您尝试在字节数组前面添加的数据类型是什么?假设它是字符串“00”的字节表示,请尝试以下操作:

bytes[] orig = <your byte array>;  
String prepend = "00";  
bytes[] prependBytes = prepend.getBytes();  
bytes[] output = new Bytes[prependBytes.length + orig.length];

for(i=0;i<prependBytes.length;i++){
    output[i] = prependBytes[i];
}

for(i=prependBytes.length;i<(orig.length+prepend.lenth);i++){
  output[i] = orig[i];
}

或者您可以使用Arrays.copy(...)代替前面提到的两个for循环来进行前置。见How to combine two byte arrays

另外,如果你试图在字面数组中预先加上0,则按以下方式转换prependBytes并使用相同的算法

byte[] prependBytes = new byte[]{0,0};

另外,您说您将字节数组转换为十六进制,这可能会截断前导零。要对此进行测试,请尝试预先设置以下内容并转换为十六进制,然后查看是否有不同的输出:

byte[] prependBytes = new byte[]{1,1};

如果它正在删除您想要的前导零,您可能希望将十六进制数转换为字符串并对其进行格式化。