我需要在字节数组的开头添加字符串“00”或字节0x00吗?我尝试使用for循环但是当我将其转换为十六进制时,它不会显示在前面。
答案 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};
如果它正在删除您想要的前导零,您可能希望将十六进制数转换为字符串并对其进行格式化。