PDA

Visualizza la versione completa : [JAVA] Da array di byte ad intero


tridi9
02-10-2004, 16:34
/*
Ciao a tutti.
L'obiettivo del metodo quell di ricevere un array di byte e trasformare il loro valore in un intero.
Parrebbe facile ma non cosi', almeno fino ad ora non ci sono riuscito.
il fatto che io devo leggere i byte in modo sequenziale cio come se fossero 16 bit:


per intenderci

esadecimale
byte[0]=0x01;
byte[1]=0x0A;

oppure
decimale
byte[0]=1;
byte[1]=10;

binario!

byte[0]=00000001;
byte[1]=00001010;

quindi

risultato==0x010A=266;
0000000100001010 = 266;

e fino a qui, logicamente.. OK.




public class ProvaByte
{
public static void main(String argd[])
{
byte arraybyte[]=new byte[2];
arraybyte[0]=(byte)0x01;
arraybyte[1]=(byte)0x0A;

System.out.println(ProvaByte.toInt(arraybyte));

}

public static int toInt(byte[] arraybyte)
{

//usando metodi toBinaryString elimina gli zeri prima dell' 1 001 diventa 1 e quindi non va bene,

//non scrivo le mie varie prove, per non scrivere fesserie.


try{

}catch(Exception e)
{
System.out.println(e);

}
return 0;

}



}




Spero che qualcuno mi aiuti ! :ciauz:

tridi9
04-10-2004, 09:28
praticamente dato un array di 2 byte devo creare uno short.. :dh:

Andrea1979
04-10-2004, 11:59
public class test {
public static void main (String args[]) {
byte arraybyte[]=new byte[2];
arraybyte[0]=(byte)0x01;
arraybyte[1]=(byte)0x0A;

int a = (arraybyte[0] << 8) + arraybyte[1];

System.out.println("risultato: "+a);
}
}


effettua i casting necessari. ricevi un warning sulla perdita di precisione se dichiari a tipo short, ma se sei sicuro che sar uno short...allora cast-a pure.

tridi9
06-10-2004, 21:55
funziona!
Anche se non ho capito come ...
facenfo lo shift dl primo byte di 8 verso destra bit, praticamente lo azzero(giusto?), poi sommo matematicamente il secondo byte. :confused:
Cmq Ok

Andrea1979
06-10-2004, 22:08
no, lo shift verso sinistra, per cui a destra entrano 8 bit posti a 0. A questi 8 bit aggiungi arraybyte[1]

:ciauz:

tridi9
07-10-2004, 14:13
Si, verso sinistra, ho sbagliato a scrivere.
Ma come ?
il primo byte del mio intero lo metto tutto a 0 ?

sommo il secondo byte a che cosa 0 ?
Oppure : i bit che vengono shiftati a sinistra non scompaiono ma finiscono nei bit successivi dell'intero e quindi praticamente metto i bit del secondo byte al posto del primo ? :fagiano:

p.s. grazie delle risposte.

Andrea1979
07-10-2004, 18:05
i bits che vanno verso sinistra sono i "most significant" (quelli importanti) per cui non scompaiono... fondamentalmente lo shift a sinistra equivale alla moltiplicazione per 2, per cui sono tutte cifre significative importanti.
Ciao

Loading