Java ではchar、符号なしの 16 ビット量です。したがって、他に何もせずuint16に直接変換できます。char
符号なし 8 ビット数量の場合、次の 2 つのオプションがあります。
を使用しbyteます。また、8 ビットを保持します。署名されているからといって、ビットを失うことはありません。ただし、算術演算を行う場合、Java はbyte自動的に にスケールアップしint、符号拡張することを覚えておく必要があります。これを防ぐには、常に次のようにマスクします。
バイト b; int foo = 5 * (b & 0xFF);
を使用しcharます。これは符号なしで 16 ビットを保持できるため、8 ビットがうまく収まります。byteaを aに入れるには、次のcharようにします。
バイト b; char c = (char)(b & 0xFF); // 下位 8 ビットをマスクします
chara をbytejust doに入れるには:
char c;
byte b = (byte)c; // Truncates to 8 bits
byteJava では符号付きであるため、算術演算を行うときは常に下位 8 ビットのみをマスクする必要があることに注意してください(符号拡張を防ぐため)。このような:
byte b;
int foo = (b & 0xFF);
マスクすることなく、バイトで必要なすべての通常のビット単位の操作を実行できます。
byte b;
if (b & 0x80) ... // Test a flag
b |= 0x40; // Set a flag
b ^= 0x20; // Flip a flag from 0 to 1 or 1 to 0
b ^= ~0x10; // Clear a flag
byte x = b << 3; // Shift left 3 bits and assign
byte x = b >>> 4; // Shift right 4 bits and assign (WITHOUT sign extension)