大家好,我是java的新手,我一直在玩弄它,现在我正试图转换所有条目" args" (参数)到一个字节数组,以便我可以看到原始字节...现在我正试图这样做:
int bytePointer=0;
int argsPointer=0;
byte[] ourMessage = new byte[80];
while(args.length>=argsPointer)
{
ourMessage[bytePointer] = args[argsPointer].getBytes();
argsPointer++;
bytePointer = bytePointer + args[argsPointer].length();
bytePointer++;
}
在一个循环中但是javas给出了我的错误" byte []无法转换为字节"。我似乎无法找到一种方法来做到这一点,但我所有的搜索都让我得到了别的东西?
答案 0 :(得分:0)
您需要一次用ourMessage
一个数组填充args[argsPointer].getBytes()
数组:
while(args.length>=argsPointer)
{
byte[] argBytes = args[argsPointer].getBytes();
for(int i = 0; i < argBytes.length; i++, bytePointer++) {
ourMessage[bytePointer] = argBytes[i];
}
argsPointer++;
}
答案 1 :(得分:0)
args[argsPointer].getBytes()
返回一个字节数组,因此您无法将其分配给单个字节。
虽然您可以使用内部循环来复制单个字节(如另一个答案所示),但我认为使用System.arraycopy会更有效:
int argsPointer = 0;
int offset = 0;
while(argsPointer < args.length)
{
byte[] source = args[argsPointer].getBytes();
argsPointer++;
System.arraycopy(source, 0, ourMessage, offset, source.length);
offset += source.length;
}
当然,您应该检查ourMessage
是否足够大以容纳所有这些字节。