java long 8 byte abspeichern
-
hi ich weiß nicht wieso aber ich kriegs net hin eine 8 byte große zahl zu generieren.
hab gelesen das long 8 byte groß ist nun versuch ich mit << operator die zahl zu füllen
long ret = 0L; ret |= (0xFF << 56); System.out.printf("%1$#x\n",ret);
ausgabe: 0xFF000000 anstatt 0xFF00000000000000
weiß wer wieso?
was mach ich falsch? will eine mac adresse als long wert abspeichern und das erste oktet soll ganz links im long stehen!
danke für eure hilfe
-
naja so funktionierts:
long ret = 0L; for(int i = 0;i < MAC_SIZE;i++) ret = (ret << 8)|0xAA;
ausgabe: 0xAAAAAAAAAAAA0000
-
0xFF << 56 ist int, schätz ich mal, weil 0xFF int ist. Wie die Java-Regeln genau funktionieren, weiß ich nicht (in C hättest du undefiniertes Verhalten), aber versuch doch mal
0xFFL << 56
.
-
danke so gehts