2011-01-28 12 views

risposta

22

È possibile ottenere il byte più basso dal numero intero da ANDing con 0xFF:

byte lowByte = (byte)(value & 0xFF); 

Questo funziona perché 0xFF ha zero bit ovunque al di sopra del primo byte.

Per ottenere il secondo più basso byte, è possibile ripetere questo trucco dopo lo spostamento verso il basso tutti i bit del numero 8 punti:

byte penultimateByte = (byte)((value >> 8) & 0xFF); 
+2

+1 anche se non è un trucco, si chiama "shift aritmetico" ;-) –

3

Non devi fare e il funzionamento di ottenere il più basso byte basta lanciarlo sul byte e ottenere il byte inferiore nella variabile byte.

prova a seguire entrambi vi darà lo stesso risultato

short value = 257; 
System.out.println(value); 
byte low = (byte) value; 
System.out.println("low: " + low); 
byte high = (byte)(value >> 8); 
System.out.println("high: " + high); 

value = 257; 
System.out.println(value); 
low = (byte) (value & 0xFF); 
System.out.println("low: " + low); 
high = (byte) ((value >> 8) & 0xFF); 
System.out.println("high: " + high); 

o provarlo su Ideone.com