由于 Java 中的 'byte' 是 8 位,而 'short' 是 16 位,我相信这应该——
byte[] packet = reader.readPacket();
short sh;
sh = (short)packet[1]; //packet[1] holds '0xff'
sh <<= 8;
sh &= 0xFF;
System.out.print(sh+" ");
产生一些大的正值,因为低 8 位被提升到高 8 位。
相反,我收到一个“0”(零)。为什么会这样?