如果有两个字节,如何通过从第一个字节中取前3个比特和从第二个字节中取后5个比特来生成一个新的字节?例如,对于 11100000
和 00011111
,如何得到 11111111
?我正在使用Java。
如果有两个字节,如何通过从第一个字节中取前3个比特和从第二个字节中取后5个比特来生成一个新的字节?例如,对于 11100000
和 00011111
,如何得到 11111111
?我正在使用Java。
byte b1, b2;
获取前三个比特位: b1 & 0xE0
获取后五个比特位: b2 & 0x1F
拼接: b1 | b2
byte b1 = (byte)0xE0, b2 = 0x1F, b3 = (byte)(b1 | b2);
它的结果是 -1
。这样可以吗? - Display Name使用掩码 0xE0
(11100000) 和 0x1F
(00011111),您可以屏蔽掉不需要的位并将它们进行按位或运算:
byte b1 = 123; // 01111011
byte b2 = 50; // 00110010
byte b3 = (b1 & 0xE0) | (b2 & 0x1F); // = 114 01110010
00101000
操作01000110
==>00100110
? - irrelephant