変数intVarはプリミティブ int、bb[]はバイト配列 {0x02,0xF7,0x8B,0xF9} です。
intVar = bb[0];
//intVar = 00000002
intVar <<= 8;
//intVar = 00000200
intVar |= bb[1];
//intvar = fffffff7
どうして????
変数intVarはプリミティブ int、bb[]はバイト配列 {0x02,0xF7,0x8B,0xF9} です。
intVar = bb[0];
//intVar = 00000002
intVar <<= 8;
//intVar = 00000200
intVar |= bb[1];
//intvar = fffffff7
どうして????
その理由は符号拡張です。使用する:
intVar = 0xFF & bb[0];
//intVar = 00000002
intVar <<= 8;
//intVar = 00000200
intVar |= 0xFF & bb[1];
// intVar = 000002F7
負のバイト (Java バイトは符号付き) を int として使用すると負の int になり、Java は 2 の補数を使用するため、先頭のすべてのビットが 1 になります。0xFF を使用すると、最下位 8 ビットと先頭の 24 のバイトが得られます。 0秒。