DataInputStream#readUnsignedShort geben Sie eine int
zurück, die 32 Bits ausgeben, aber der short
Typ 16 Bits ausgeben.
int << 16
verschiebt die niedrigen 16 Bits auf hohe 16 Bits und füllt 0
in den niedrigen 16 Bits. Zum Beispiel:
int value = 0b11111111000000001000000011111111;
^---------------
int high = 0b10000000111111110000000000000000;
// high == value << 16
in diesem Fall, und der Operator ist |
verbindet High-Bits und Low-Bits zusammen. zum Beispiel:
int high = 0b10000000111111110000000000000000;
int low = 0b00000000000000001000000000000001;
int value = 0b10000000111111111000000000000001;
// value == high | low;
auf der anderen Seite, das Protokoll ein int
in zwei short
rettende, die ein hohes short
und eine niedriges short
ist. und der obige Code ist der int
Wert von zwei short
s gelesen.
für weitere Details können Sie bitewise operators und shift operators sehen.
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html –