HOWTO · Java

Converter Int em Byte em Java

Este artigo apresenta como converter int em byte em Java.

Nesta página

Este tutorial apresenta como converter int em byte em Java.

Em Java, int e byte são tipos primitivos e usados ​​para armazenar valores numéricos. Ambos são usados ​​para armazenar valores assinados e não assinados, mas têm diferentes intervalos de armazenamento. O intervalo de bytes é -128 a 127 e o intervalo interno é -2,147,483,648 a 2,147,483,647. Portanto, podemos ver claramente que int pode armazenar um valor maior do que o tipo de byte.

Ao converter int em byte, alguns dados são perdidos devido à memória. Vamos ver alguns exemplos.

Conversão de Int para Byte em Java

Neste exemplo, convertemos int em byte ao converter e ver se o valor int excede o intervalo de bytes. Em caso afirmativo, ele é convertido em um valor negativo. Isso significa que se um valor for maior do que o intervalo de bytes, ele será convertido em negativo. Portanto, quando convertemos um valor grande em tipo de byte, obtemos um resultado diferente do tipo int.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 127; // byte max positive range
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = 130; // Out of positive byte range
    System.out.println("int value = " + a);
    b = (byte) a;
    System.out.println("byte value = " + b);
  }
}

Resultado:

int value = 127
byte value = 127
int value = 130
byte value = -126

Conversão de Int em Byte e vice-versa em Java

Para converter um tipo int em um tipo de byte, precisamos usar typecasting explícito. No entanto, para converter o byte em int, não precisamos de nenhuma conversão explícita. Java faz isso implicitamente. Veja o exemplo abaixo.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = b;
    System.out.println("int value = " + a);
  }
}

Resultado:

int value = 230
byte value = -26
int value = -26

Conversão de int para byte sem sinal em Java

Fizemos a conversão de assinaturas em todos os exemplos acima, mas se você quiser uma conversão sem sinal, use o código abaixo. Aqui, usamos o código & 0xFF, junto com o valor int, para obter uma conversão sem sinal. Veja o exemplo abaixo.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = b & 0xFF;
    System.out.println("int value = " + a);
  }
}

Resultado:

int value = 230
byte value = -26
int value = 230

Conversão de Int em Byte e vice-versa usando Java 8

Se você estiver trabalhando com Java 8 ou uma versão superior, use o método toUnsignedInt() da classe Byte para obter uma conversão sem sinal. Veja o exemplo abaixo.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = Byte.toUnsignedInt(b);
    System.out.println("int value = " + a);
  }
}

Resultado:

int value = 230
byte value = -26
int value = 230

Int para Byte usando o método byteValue() em Java

Também podemos usar o método byteValue() da classe Integer para obter o valor do byte após a conversão. Este método retorna um valor assinado. Portanto, use-o apenas se quiser obter um resultado com sinal. Veja o exemplo abaixo.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    Integer i = a;
    byte b = i.byteValue();
    System.out.println("byte value = " + b);
  }
}

Resultado:

int value = 230
byte value = -26