3

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

4

1 回答 1

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 循环来进行前置。请参阅如何组合两个字节数组

prependBytes或者,如果您尝试在字节数组中添加 0,请按以下方式进行decalare并使用相同的算法

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

您还说您正在将字节数组转换为十六进制,这可能会截断前导零。要对此进行测试,请尝试在前面添加以下内容并转换为十六进制,看看是否有不同的输出:

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

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

于 2012-07-04T03:52:39.110 回答