Convertir matriz de bytes a entero en Java
Byte pertenece a los tipos de datos primitivos en Java. un array de bytes en Java es un array que contiene bytes y almacena una colección de datos binarios. El tipo de datos entero representa números enteros en Java. Los bytes y los enteros están estrechamente relacionados porque los datos binarios se pueden convertir a un formato entero.
En este artículo, convertiremos un array de bytes en un tipo entero en Java.
La clase ByteBuffer
presente en el paquete java.nio
en Java nos proporciona un método para convertir el array de bytes en un entero.
Vea el código a continuación.
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() + " ");
}
}
Producción :
66320
En el código anterior, creamos un Bytebuffer
de una longitud determinada del array de bytes, y después de eso, leemos los siguientes cuatro bytes como un tipo entero. El método ByteBuffer
envuelve el array de bytes en un búfer, y la función getInt()
lee los siguientes cuatro bytes de la clase como un número entero.
A continuación tenemos otro ejemplo de la clase ByteBuffer
. En el siguiente código, asignamos la memoria solo por dos. La función que realizan los métodos es la misma que la anterior. Aquí convierte cada byte por separado, como podemos ver, da dos salidas diferentes.
Vea el código a continuación.
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);
}
Producción :
3
4
El ByteBuffer.wrap()
envuelve el array en un búfer. De forma predeterminada, almacena los datos en forma de tipo big-endian 0x00. Observe que en la salida tenemos dos números enteros diferentes. Como se discutió anteriormente, este código toma cada elemento presente en el array y lo convierte en consecuencia.