How to concatenate two byte arrays in Java?

4

I have:

byte mensagem[];
byte nonce[];

How do I concatenate the array nonce at the end of the array mensagem and store it in a third array?

    
asked by anonymous 20.05.2015 / 23:09

4 answers

2

One way to do this is to store them in a ByteArrayOutputStream :

byte[] primeiroArray = "stack".getBytes();
byte[] segundoArray  = "overflow".getBytes();
ByteArrayOutputStream terceiroArray = new ByteArrayOutputStream();

terceiroArray.write(primeiroArray);
terceiroArray.write(segundoArray);

System.out.println(Arrays.toString(terceiroArray.toByteArray()));
System.out.println(terceiroArray.toString());

// [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
// stackoverflow

View demonstração

Another possibility is to use #: function ArrayUtils.addAll() of the Apache Commons Lang library:

byte[] terceiroArray = ArrayUtils.addAll(primeiroArray, segundoArray);
    
21.05.2015 / 01:04
4

This worked for me:

byte msg[];
byte nonce[];

byte[] mensagem = new byte[msg.length + nonce.length];
System.arraycopy(msg, 0, mensagem, 0, msg.length);
System.arraycopy(nonce, 0, mensagem, msg.length, nonce.length);

Source: link

    
21.05.2015 / 00:15
2

Try this:

byte [] terceiro = new byte[mensagem.length + nonce.length];
for (int i = 0; i < terceiro.length; i++) {
    if (i < mensagem.length) {
        terceiro[i] = mensagem[i];
    } else {
        terceiro[i] = nonce[i - mensagem.length];
    }
}
    
20.05.2015 / 23:14
2
byte [] terceiro = new byte[mensagem.length + nonce.length];

for (int i = 0; i < mensagem.length; i++) {
    terceiro[i] = mensagem[i];
}
for (int i = mensagem.length; i < terceiro.length; i++) {
    terceiro[i] = nonce[i - mensagem.length];
}

I declare the third array with capacity equal to the sum of the size of the previous two.

In the first loop I filled the third array with the bytes of the first array.

In the second loop I initialized an index for the third array at the position equal to the last index of the first array + 1. And from this index I started copying the items from the first array.     

21.05.2015 / 14:39