将所有args转换为字节数组

时间:2014-08-18 16:29:32

标签: java arrays

大家好,我是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 []无法转换为字节"。我似乎无法找到一种方法来做到这一点,但我所有的搜索都让我得到了别的东西?

2 个答案:

答案 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是否足够大以容纳所有这些字节。