Transformar boolean em byte, como?

13 respostas
laserista

Pessoal,

Gostaria de saber se existe alguma maneira de tranformar um boolean em byte? Estou usando o boolean para respresentar bits, true seria 1 e false 0

13 Respostas

kikostyle
public byte booleaToByte(boolean bool){
		if(bool == true){
			return 1;
		}else{
			return 0;
		}
	}
	
	...
	
	byte b = booleaToByte(true);

	System.out.println(byte);
	saida: 1
guigouz

Existe motivo suficiente para usar 8 bits para representar o que só precisaria de um ?

D

Como não é possível fazer o casting de boolean pra nenhum outro tipo, talvez essa seja a única forma mesmo.

[]'s

eduveks

kikostyle:
public byte booleaToByte(boolean bool){ if(bool == true){ return 1; }else{ return 0; } }

ou

public byte booleaToByte(boolean bool) {
	return bool ? 1 : 0;
}
cv1

A JVM ja faz isso internamente de qualquer jeito :wink:

laserista

Na verdade eu tenho um vetor de boolean setados em true ou false como sendo os bits 1 ou 0, pensando o ideal seria tranformar 8 posições desse vetor em um único byte e depois puder desfazer, isto é, converte o byte em um vetor de boolean.

Alguma dica ?

diego2005

Vê se é isso:

public class Bytes {
	public static void main(String[] args) {
		boolean[] ba = {false, false, true, false, true, true, false, true};
		String valores = "";

		for(boolean b : ba) {
			valores += (b ? '1' : '0');
		}

		byte b = Byte.valueOf(valores, 2);

		System.out.println(valores + " = " + b);
	}
}

T+

laserista
diego2005:
Vê se é isso:
public class Bytes {
	public static void main(String[] args) {
		boolean[] ba = {false, false, true, false, true, true, false, true};
		String valores = "";

		for(boolean b : ba) {
			valores += (b ? '1' : '0');
		}

		byte b = Byte.valueOf(valores, 2);

		System.out.println(valores + " = " + b);
	}
}

T+

hummm acho que é isso...

depois para converter o byte b em vetor de boolean seria assim?

String bits = Integer.toBinaryString((int)b);

for(int j=0; j < bits.length();j++)
  if (bits.charAt(j) == '0')
    vetorBoolean[j] = false;
  else
    vetorBoolean[j] = true;
diego2005

Isso…só não precisa dessa conversão:

String bits = Integer.toBinaryString((int)b);

Pode ser assim:

String bits = Integer.toBinaryString(b);

T+

laserista

Valeu ai diego2005 !

[]'s

laserista

Por que ao fazer:

Byte.valueOf("11111111", 2);

Retorna o seguinte erro:

Exception in thread "main" java.lang.NumberFormatException: Value out of range. Value:"11111111" Radix:2

Se 11111111 (8 bits = 1 byte) representa 255

Alguém pode me explicar isso ?

xandroalmeida

Porque o range de Byte é de -128 a 127
http://java.sun.com/javase/6/docs/api/java/lang/Byte.html

laserista

xandroalmeida:
Porque o range de Byte é de -128 a 127
http://java.sun.com/javase/6/docs/api/java/lang/Byte.html

Claro, com certeza. Já to viajando, o dia todo em cima desses códigos binários, não tem condições.

Criado 26 de junho de 2007
Ultima resposta 27 de jun. de 2007
Respostas 13
Participantes 8