Converter Byte Array em Integer em Java

Siddharth Swami 12 outubro 2023
Converter Byte Array em Integer em Java

Byte vem sob os tipos de dados primitivos em Java. um array de bytes em Java é um array que contém bytes e armazena uma coleção de dados binários. O tipo de dados inteiro representa inteiros em Java. Bytes e inteiros estão intimamente ligados porque os dados binários podem ser convertidos para a forma inteira.

Neste artigo, converteremos um array de bytes em um tipo inteiro em Java.

A classe ByteBuffer presente no pacote java.nio em Java nos fornece um método para converter a matriz de bytes em um inteiro.

Veja o código abaixo.

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() + " ");
  }
}

Resultado :

66320

No código acima, criamos um Bytebuffer de um determinado comprimento do array de bytes, e depois disso, lemos os próximos quatro bytes dele como um tipo inteiro. O método ByteBuffer envolve a matriz de bytes em um buffer, e a função getInt() lê os próximos quatro bytes na classe como um inteiro.

Abaixo temos outro exemplo da classe ByteBuffer. No código abaixo, alocamos a memória por apenas dois. A função desempenhada pelos métodos é a mesma da anterior. Aqui, ele converte cada byte separadamente, pois podemos ver que dá duas saídas diferentes.

Veja o código abaixo.

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);
  }

Resultado :

3 4

O ByteBuffer.wrap() envolve o array em um buffer. Por padrão, ele armazena os dados na forma do tipo big-endian 0x00. Observe que na saída, temos dois inteiros diferentes. Conforme discutido anteriormente, esse código pega cada elemento presente na matriz e os converte de acordo.

Artigo relacionado - Java Array