2016-09-28 4 views
0

Ich bin ein wenig verwirrt, um die ">>" Operation in dieser Methode unten zu verstehen. Versucht der Programmierer, das erste und zweite Byte aus dem Bytedatenarray zu holen, ohne den Inhalt des Datenarrays zu ändern? Und was bedeutet die 255 (ff) für die Operation?<< Operation in Byte-Array-Verarbeitung

Ich schätze jede Hilfe.

einfach

public static int get2ByteData(final int[] data) { 
    int number = 0; 
    number += (data[0] & 0xff) << 8; 
    number += (data[1] & 0xff) << 0; 
    return number; 
} 
+1

0xff' '' 11111111' ist binär. Es wird als Bitmaske verwendet, um die 8 niedrigstwertigen Bits zu isolieren. – Michael

Antwort

1

Es ist nur einige bitmasking/Schaltvorgänge.

z.B. wenn data[0] diese Bits enthält 1111000010101010, dann ist hier, was passiert:

 1111000010101010 
&& 0xFF 

     1111000010101010 
&& 0000000011111111 
---------------------- 
     0000000010101010 


     0000000010101010 
<< 8 
---------------------- 
     1010101000000000 

Das Gleiche gilt für , mit der Ausnahme, da die bitshift 0 ist, gibt es keine Verschiebung auftritt.

Grundsätzlich dieser Code eine 16-Bit-Zahl nimmt, und das Bytes herum Swapping, so dass Bitmusters xxxxxxxxyyyyyyyy wird yyyyyyyyxxxxxxxx