Trabalhando com bits

12 respostas
L

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


12 Respostas

L

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

B

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};

L

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};

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

T

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

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

L

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 ?

S

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

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

S

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 ?

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");
L

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 ?

L

ng ?

L

:?:

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

:?:

P

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

L

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

Criado 15 de junho de 2007
Ultima resposta 27 de jul. de 2007
Respostas 12
Participantes 6