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
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
public byte booleaToByte(boolean bool){
if(bool == true){
return 1;
}else{
return 0;
}
}
...
byte b = booleaToByte(true);
System.out.println(byte);
saida: 1
Existe motivo suficiente para usar 8 bits para representar o que só precisaria de um ?
Como não é possível fazer o casting de boolean pra nenhum outro tipo, talvez essa seja a única forma mesmo.
[]'s
public byte booleaToByte(boolean bool){
if(bool == true){
return 1;
}else{
return 0;
}
}
ou
public byte booleaToByte(boolean bool) {
return bool ? 1 : 0;
}
A JVM ja faz isso internamente de qualquer jeito 
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 ?
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+
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;
Isso…só não precisa dessa conversão:
String bits = Integer.toBinaryString((int)b);
Pode ser assim:
String bits = Integer.toBinaryString(b);
T+
Valeu ai diego2005 !
[]'s
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 ?
Porque o range de Byte é de -128 a 127
http://java.sun.com/javase/6/docs/api/java/lang/Byte.html
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.