Int para Byte

Olá, alguem sabe como converter um int para um array de bytes?

Int para byte ou para array de bytes?

Até!

Se for int para byte você pode fazer assim:

Integer i = 300; byte b = Integer.byteValue();

T+

Olá

Transforme o int em String depois use o metodo getBytes()

Olá,

A sugestão do furutani funciona. Se você quiser um byte array mais compacto para ints com valores grandes, ou se você quiser sempre um byte array do mesmo tamanho, que é conveniente em muitos casos, você pode usar o seguinte trecho que adaptei do meu projeto:

    public static byte[] intToFourBytes(int i, boolean bigEndian) {
        if (bigEndian) {
            byte[] data = new byte[4];
            data[3] = (byte) (i & 0xFF);
            data[2] = (byte) ((i &gt&gt 8) & 0xFF);
            data[1] = (byte) ((i &gt&gt 16) & 0xFF);
            data[0] = (byte) ((i &gt&gt 24) & 0xFF);
            return data;

        } else {
            byte[] data = new byte[4];
            data[0] = (byte) (i & 0xFF);
            data[1] = (byte) ((i &gt&gt 8) & 0xFF);
            data[2] = (byte) ((i &gt&gt 16) & 0xFF);
            data[3] = (byte) ((i &gt&gt 24) & 0xFF);
            return data;
        }
    }

O tipo int em Java tem 32 bits, ou seja, ele sempre cabe em 4 bytes. O parâmetro bigEndian define a ordem em que o valor está definido no byte array (para mais informações http://en.wikipedia.org/wiki/Endianness ). Isso é só importante se você precisa satisfazer algum "formato" etc na hora de gravar esse byte array em arquivo, stream, etc.

[]s,
Sami

Opa era isso mesmo o que eu queria, obrigado!

Excelente solucao Sami Koivu , mas como eu desenvolvo pra web, eu nunca senti necessidade de usar bytes ao inves de int.

Onde se usa muito bytes ao inves de int?

Olá

[quote=afsrj]Excelente solucao Sami Koivu , mas como eu desenvolvo pra web, eu nunca senti necessidade de usar bytes ao inves de int.

Onde se usa muito bytes ao inves de int?[/quote]
Usa-se bastante quando se desenvolve POS (point-of-sale).

[quote]Point of Sale (POS)

POS ou PoS é a abreviatura de ponto de venda ou ponto de serviço (do inglês Point of Sale ou Point of Service). Pode ser uma loja varejista, um caixa em uma loja, ou um local onde uma transação financeira ocorre neste tipo de ambiente. Um POS também pode se referir ao sistema de caixa registradora usado em um estabelecimento. Sistemas de POS são usados em restaurantes, hotéis, estádios, cassinos, além de lojas de varejo. Em suma, se algo pode ser vendido, existe um sistema POS.

O POS utiliza apenas uma linha telefonica para comunicação, e os cupons das vendas são impressos pelo proprio POS, não sendo necessário o uso de um PC, automação comercial ou ECF.[/quote]
http://pt.wikipedia.org/wiki/POS

Por que neste tipo de serviço não se usa int?
byte é mais rápido? mais preciso? mais…(o que?)?

Desculpa pela demora da minha resposta, mas ai vai:

Uso o tipo byte para a comunicação com a porta paralela do computador em um dos meus projetos.

Aparelhos POS, geralmente, trabalham com mensagens ISO 8583. Estas mensagens são escritas em um mapa de bits (bit map), por isso que que acabamos tendo que usar bytes.

Trabalho em uma empresa que temos esta situação. É um saco montar o mapa de bits e corrigir problemas nas mensagens…

Olá,

No meu caso, eu preciso isso para escrever/ler arquivos .class, ou outros tipos de arquivos binários (no sentido não-texto). Ou comunicação com protocolos não-texto. Basicamente quando o formato do arquivo exige que os valores são escritos/lidos de uma certa forma. Em alguns casos dá para usar os DataInputStream e DataOutputStream, também.

[]s,
Sami