Ho alcuni dati nelle variabili int
in Java (intervallo compreso tra 0 e 64000). Come convertire in byte questo intero? Ho bisogno solo di due byte inferiori da int
(l'intervallo è ok). Come estrarlo?Ottieni due byte inferiori dalla variabile int
11
A
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);
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
+1 anche se non è un trucco, si chiama "shift aritmetico" ;-) –