Converti array di byte in intero in Java
Byte rientra nei tipi di dati primitivi in Java. Un array di byte in Java è un array contenente byte e memorizza una raccolta di dati binari. Il tipo di dati intero rappresenta i numeri interi in Java. Byte e numeri interi sono strettamente collegati perché i dati binari possono essere convertiti in formato intero.
In questo articolo, convertiremo un array di byte in un tipo intero in Java.
La classe ByteBuffer
presente nel pacchetto java.nio
in Java ci fornisce un metodo per convertire l’array di byte in un intero.
Vedi il codice qui sotto.
import java.nio.ByteBuffer;
public class Test {
public static void main(String[] args) {
byte[] bytes = {0x00, 0x01, 0x03, 0x10};
System.out.println(ByteBuffer.wrap(bytes).getInt() + " ");
}
}
Produzione :
66320
Nel codice sopra, abbiamo creato un Bytebuffer
di una data lunghezza dell’array di byte e, successivamente, abbiamo letto i successivi quattro byte da esso come un tipo intero. Il metodo ByteBuffer
avvolge l’array di byte in un buffer e la funzione getInt()
legge i successivi quattro byte nella classe come un numero intero.
Di seguito abbiamo un altro esempio di classe ByteBuffer
. Nel codice seguente, allochiamo la memoria solo per due. La funzione svolta dai metodi è la stessa della precedente. Qui converte ogni byte separatamente come possiamo vedere che fornisce due output diversi.
Vedi il codice qui sotto.
import java.nio.*;
class Byte_Array_To_Int {
static void byte_To_Int(byte ar[]) {
ByteBuffer wrapped = ByteBuffer.wrap(ar); // big-endian by default
short num = wrapped.getShort();
ByteBuffer dbuf = ByteBuffer.allocate(2); // allocates the memory by 2.
dbuf.putShort(num);
byte[] bytes = dbuf.array();
for (int i = 0; i < bytes.length; i++) { // loop for printing the elements.
System.out.println(bytes[i]);
}
}
public static void main(String[] args) {
byte[] b = {0x03, 0x04}; // byte type array.
byte_To_Int(b);
}
Produzione :
3 4
Il ByteBuffer.wrap()
avvolge l’array in un buffer. Per impostazione predefinita, memorizza i dati sotto forma di tipo big-endian 0x00. Si noti che nell’output abbiamo due interi diversi. Come discusso in precedenza, questo codice prende ogni elemento presente nell’array e lo converte di conseguenza.