Konvertierung von Integer in einen Byte Array: Verständnissproblem

FrankTheFox

Grünschnabel
Hallo,


Code:
1:           byte[] data = new byte;
2:           for(int i=0; i<4;++i){
3:              int shift = i <<3;
4:              data[3-i]=(byte) ((number & (0xff << shift)) >>> shift);
5:           }

Ok ein int belegt 4 Byte. shift ergibt demzufolge 0,8,16,24
24= 16777216 d.h. im 4 byte das erste bit anknipsen (0x00000001)
16=65535 d.h. im 3 byte das erste -||- (0x00000001)
8 = ...
0 = ...

Wenn ich jetzt 0xff << shift betrachte, dann bedeutet meiner Meinung nach
0xff << 0 = 1111 1111
0xff << 8 = 0000 0000
0xff << 16 = 0000 0000
0xff << 24 = 0000 0000
Welchen Sinn hat den ein schieben eines Byte um z.B. 24, 16, 8? Oder hab' ich da was falsch verstanden. Sind dann nicht immer Byte 3 Byte 2 und Byte1 immer gleich null? Und demnach auch der & mit number (wobei das ja wiederum 4 byte sind)?
Kann mir das mal jemand erklären.


Gruß
Franky
 
Zurück