Converter array de bytes em int e int em array de bytes?

Como faço para converter array de bytes em int. Eu consegui fazer isso e colocar em uma string mas não consigo colocar em um int.

// código para string
byte []nomeBytes = new byte[tamString]; // passo qtd bytes
r1.read(nomeBytes);// pego bytes e coloco no array nomeBytes
String nome = new String(nomeBytes,"UTF-16");

// código para int
byte[] pegaInteiro = new byte[4];
r1.read(pegaInteiro);
int num = converteByteParaInt(pegaInteiro)

Eu sei que estou alguns meses atrasado… Mas fica aí pra quem pesquisar essa solução.
Recomendo o uso da classe BigInteger.

byte[] byteArray = // ... Instancie e preencha as posições do array
int inteiroRetiradoDoArray = (new BigInteger( byteArray )).intValue();

ou

byte[] byteArray = // ... Instancie e preencha as posições do array
BigInteger biRetiradoDoArray = new BigInteger( byteArray );
int inteiroRetiradoDoArray = biRetiradoDoArray.intValue();

Se é mesmo um int, o vetor de byte vai ter 4 posições. Atenção, a classe BigInteger vai interpretar todos os bytes como pertecentes a um único inteiro; se tiver mais de quatro posições (bytes), pode ser que o vetor seja interpretado como um número bem maior do que o tipo int pode representar!
O interessante é que essas classes podem representar números com uma quantidade teoricamente ilimitada de bytes.

E recomendo o conhecimento dos construtores, métodos estáticos e não estáticos das classes BigDecimal (para reais) e BigInteger (para inteiros).

Tutorial classe BigInteger

1 curtida

Obrigada pela contribuição!