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?
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?
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
Another possibility is to use #: function ArrayUtils.addAll()
of the Apache Commons Lang library:
byte[] terceiroArray = ArrayUtils.addAll(primeiroArray, segundoArray);
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
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];
}
}
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.