Tenho os numero em binario num inteiro e qro convertelos para bytes

é o seguinte. eu tenho uma int que tem os numeros em binario que foi convertido de outro inteiro, por exemplo, o inteiro eh 2 converto pra binario e no outro inteiro vai tar armazenado o 10(que é o 2 em binario). mas eu preciso mesmo é converter pra bits puros e escrever em um arquivo de saída. Sera que tem como converter ou tem geito melhor de fazer? pq o tipo byte em java é estranho, vai de -127 a 128 oO.

Se você quer colocar um valor em byte como diz, utilize um Array, acho mais fácil vc converter este inteiro para String e após isso para byte ficando mais ou menos parecido com isso:

byte[] mensagem = null;
String str = Integer.toString(binario);
mensagem = str.getBytes();

Espero ter ajudado!

1 - pq vc quer fazer isso? Se explicar, as vezes existe uma solução melhor.
2 - o que você quer dizer com bytes puros? Um arquivo com 0s e 1s ou um arquivo binário?
3 - não tem nada de estranho com o tipo byte. Um byte são 8 bits certo? quantos bits vc precisar para representar o intervalo -127 a 128? 8 bits. Note que o bit mais significativo é o do sinal. Se não tivesse sinal, seria de 0 a 255, ou seja, 256 valores, 2^8 = 256. O mesmo para -127 até 128 (256 valores).

[]´s

Enfim, se quiser um arquivo binário, uma alternativa seria essa aqui:

[code]// cria um ByteArrayOutputStream
ByteArrayOutputStream bos = new ByteArrayOutputStream();

// cria um FileOutputStream, direcionando para o arquivo teste.dat que está no C:/
FileOutputStream fos = new FileOutputStream( “C:/teste.dat” );

// escreve o inteiro 255 no stream.
// note que caso você utilize números maiores que 255, os 24 bits
// de ordem mais alta serão descartados, visto que o que você está tentando escrever é
// um int, que em java tem 32 bits (4 bytes), mas na verdade está escrevendo um byte.
baos.write( 255 );

// escreve o que foi escrito no stream de bytes no stream de arquivo
baos.writeTo( fos );

// fecha o stream de bytes, dando um flush antes (o flush é implícito)
baos.close();

// idem para o stream de arquivo
fos.close();[/code]

Esse mesmo código poderia ser feito assim também:

FileOutputStream fos = new FileOutputStream( "C:/teste.dat" ); // escreve o int 1 no stream. note que a regra do descarte dos 24 bits de ordem mais alta ainda se aplica fos.write( 1 ); fos.close();

O código acima funciona igual ao anterior, visto que um FileOutputStream trabalha com arquivos binários, entretanto a primeira listagem é mais “didática”.
Olha o que é dito no Javadoc do FileOutputStream:

Faltou falar que ambas as classes estão no pacote java.io.

Agora, para verificar o valor do aruqivo gerado, use qualquer hexeditor.

[]´s

[quote=davidbuzatto]1 - pq vc quer fazer isso? Se explicar, as vezes existe uma solução melhor.
2 - o que você quer dizer com bytes puros? Um arquivo com 0s e 1s ou um arquivo binário?
3 - não tem nada de estranho com o tipo byte. Um byte são 8 bits certo? quantos bits vc precisar para representar o intervalo -127 a 128? 8 bits. Note que o bit mais significativo é o do sinal. Se não tivesse sinal, seria de 0 a 255, ou seja, 256 valores, 2^8 = 256. O mesmo para -127 até 128 (256 valores).

[]´s[/quote]

é um trabalho q tenho que fazer, fiz uma arvore huffman adptativa(para compactação de texto), no caso do trabalho eu tenho um dicionario com bits pré-definidos, e nesse dicionario coloquei uma tabela hash <String, Integer> , em String esta a letra no alfato e em integer esta um numero inteiro correspondente a letra do alfabeto(dei numeros menores as vogais para ter bits menores e nao sei se minha idéia esta certa). nessa classe dicionario tem um metodo que consulta a letra e que pega o inteiro retornado pela tabela Hash e converte em tipo Byte, e depois, a minha ideia seria converter para bits puros para colocar na arvore e apos a arvore estiver pronta escrever os bits no arquivo de saida, que seria o arquivo compactado.