Trabalhando com bits

Pessoal estou meio perdido e enferrujado em java mas gostaria de saber se existe alguma maneira de eu trabalhar com bits ???

Preciso implementar um protocolo da camada de enlace de dados e seus quadros transmitidos sao compostos por sequencias de bits e esses bits são dividos em vários campos. Gostaria de poder setar esse campos com por exemplo: “01101011” nehum campo é menor que 8 bits entao eu posso usar o tipo byte mas mesmo assim ainda nao descobrir com setar da maneira que eu desejo. Segue anexo com o formato de um quadro

Nao sei se consegui me expressar muito bem, qualquer duvida perguntem.

Valeu


Ve se isso ajuda http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java_/_Operadores_de_bits .

talves um array de bytes resolva.

por exemplo:

/*
flag = 0xAA
address = 0xBB;
control = 0xCCCC;
information = 0xFFFFFFFF
fcs = 0xDDDDDD
*/

byte[] protocolo = {0xAA,0xBB,0xCC,0xCC,0xFF,0xFF,0xFF,0xFF,0xDD,0xDD,0xDD,0xAA};

[quote=bobmoe]talves um array de bytes resolva.

por exemplo:

/*
flag = 0xAA
address = 0xBB;
control = 0xCCCC;
information = 0xFFFFFFFF
fcs = 0xDDDDDD
*/

byte[] protocolo = {0xAA,0xBB,0xCC,0xCC,0xFF,0xFF,0xFF,0xFF,0xDD,0xDD,0xDD,0xAA};[/quote]

Desculpe a minha ignorância mas estas setando em Hexa ? Nao entendi :oops:

E outra pergunta? como ficaria um endereço tipo 127.0.0.1 em 8 bits ?? ba q merda to viajando muito

127.0.0.1 é um endereço de 32 bits. Em bytes, ele fica:

0x7F, 0x00, 0x00, 0x01.

Queria converter uma String “teste” para binário existe algo do genero ? Eu vi o “toBinaryString” da classe Integer mas retorna uma String e gostaria de armazenar em um tipo byte.

Se pergarmos o char code de cada letra e converter esse numero para binario e juntar todos teremos o que eu quero ?

[quote=laserista]Pessoal estou meio perdido e enferrujado em java mas gostaria de saber se existe alguma maneira de eu trabalhar com bits ???
[/quote]

Sim. Existem duas principais. Orientado a objetos vc tem o BitSet. Uma classe que funciona como se fosse um array de bits. A outra forma é usar os operadores & , | e ^ para fazer , na mão a boa e velha logica boolean.

Para fazer isto a seguir
010010 & 000001 = 000000
010010 | 000001 = 010011

seria

18 & 1 = 0
18 | 1 = 19

Você pode usar notação base 8 , se quiser

Como é um protocolo, vc por questões de velocidade seja melhor usar os operadores binários, mas se isso não for um problema use BitSet

[quote=laserista]Queria converter uma String “teste” para binário existe algo do genero ? Eu vi o “toBinaryString” da classe Integer mas retorna uma String e gostaria de armazenar em um tipo byte.

Se pergarmos o char code de cada letra e converter esse numero para binario e juntar todos teremos o que eu quero ?[/quote]

byte[]  binario = "test".getBytes();

Só que esses bytes estão codificados no CharSet padrão no momento da chamada. Vc pode passar o CharSet no qual vc quer a codificação

byte[]  binario = "test".getBytes("ISO-8859-1");
byte[]  binario = "test".getBytes("UTF-8");

Pessoal,

Preciso converter 11011101 pra byte mas na hora da conversao:

Byte.valueOf("11011101", 2);

Ocorre o erro:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: Value out of range. Value:"11011101" Radix:2

Como eu resolvo esse problema com a faixa de representação de um byte ?

ng ?

:?:

Existe alguma maneira de eu converter um byte em uma string binaria(0’s e 1’s) ?

:?:

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#toBinaryString(int)

Valeu ai, nao me liguei que um byte é um numero, boiei mesmo