Newsgroup: it.comp.java
Titolo: int to byte[]

Come faccio a trasformare un  int  in un array di byte?
E un oggetto String (del tipo "343") in un int?

 E un oggetto String (del tipo "343") in un int?
Leggendo il manuale. :)
Integer.parseInt()
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

Come trasformare un int (che pesa 32 bit) in un array di byte (ogni byte
pesa 8 bit) ?
Devi fare qualche mageggio del tipo
byte b[] = new byte[4];
int    i = 12345678;
// Isolo il byte piů basso
b[0] = (byte) (i & 0x000000FF);
//Isolo il secondo byte e mediante
//lo shifting lo posiziono su quello piů basso
b[1] = (byte) ((i & 0x0000FF00)>>8);
//Isolo il terzo byte e mediante
//lo shifting lo posiziono su quello piů basso
b[2] = (byte) ((i & 0x0000FF00)>>16);
//Isolo il quarto byte e mediante
//lo shifting lo posiziono su quello piů basso
b[3] = (byte) ((i & 0x0000FF00)>>24);
Per riottenere il valore in intero :
                 int val = 0;
                for(int idx=3; idx>=0; idx--)
                {
                    int sup = (int)b[idx];
                    if(sup<0) sup = 128+(128+sup);
                    val<<=8;
                    val = val | sup;
                }
Per convertire una stringa in un numero ci sono i vari Long.parsLong(Stringa
s) e Integer.parseInt(Stringa s)

pesa 8 bit) ?
[cut]
Io avevo capito semplicemente:
Integer.toString(i).getBytes();

 Integer.toString(i).getBytes();
Puodarsi che abbia capito male io la domanda, nel qual caso comunque penso
che possa aiutare qualcuno sapere come fare simili trasformazioni.
Io sono stato costretto a fare questo giochetto per fare un mio caricatore
di immagini BMP con Java.
Funziona perfettamente

"TelespallaBob" <santo...@NOSPAMciaoweb.it> ha scritto nel messaggio
news:a373bh$emj$1...@lacerta.tiscalinet.it...

Ma il risultato è lo stesso di quello proposto da TelespallaBob? Credo di
si....

Per riottenere il valore in intero :
In analogia al metodo di "scomposizione" :-) io farei una cosa del 
genere:
  int res = 0 | (b[3] << 24);
  res = res | ((b[2] << 16) & 0x00FF0000);
  res = res | ((b[1] << 8) & 0x0000FF00);
  res = res | (b[0] & 0x000000FF);
Come dice qualcuno:
i miei 0.02 euro ;-)
-- 
Ciao
	Fabrizio C.


Giusto per curiosità riporto l'implementazione adottata nelle librerie
standard ( in particolare nei metodi readInt/writeInt di
Object<Input/Output>Stream )
===  byte[] -> int  === (A)
return ((buf[0] & 0xFF) << 24) +
       ((buf[1] & 0xFF) << 16) +
       ((buf[2] & 0xFF) << 8) +
       ((buf[3] & 0xFF) << 0);    //???? why & 0xFF ????
===  int --> byte[]  === (B)
    buf[0] = (byte) (v >>> 24);
    buf[1] = (byte) (v >>> 16);
    buf[2] = (byte) (v >>> 8);
    buf[3] = (byte) (v >>> 0);
E' visibile la scelta di tipo MSB nell'ordinamento dei byte.
Chiaramente (B) è un'ottima soluzione per risparmiare tempo. Su (A)
nutrivo qualche dubbio in proposito per via della scelta di usare "+"
anziché "|", ma i test di performance hanno dimostrato che non c'è
differenza tra le 2 versioni. 
Per motivi ignoti permane il filtro ( "& 0xFF" ) anche sul primo byte,
anche se, essendo shiftato di 24 bit, non si dovrebbe usarlo in una
logica a 32 bit.
Ciao, Max.

       ((buf[3] & 0xFF) << 0);    //???? why & 0xFF ????
Per una svista il commento è finito sulla linea sbagliata (il mio
dubbio è relativo alla prima riga  di questo post (==>  buf[0] )

Si hai ragione, nella fretta di ripostare, ho copiato male il codice.