nul*_*ptr 10 java bit-manipulation
我想在Java中将字节转换为int.我想假设字节是无符号字节.假设是
byte a = (byte)0xFF;
int r = (some operation on byte a);
Run Code Online (Sandbox Code Playgroud)
r应该是255而不是十进制的-1.
然后我想从3个字节创建int值.假设是
byte b1 = (byte)0x0F;
byte b2 = (byte)0xFF;
byte b3 = (byte)0xFF;
int r = (some operation in bytes b1, b2 and b3);
Run Code Online (Sandbox Code Playgroud)
然后r应该是0x000FFFFF.字节b1将位于较高的第3位置,字节b3将位于较低的第1位置的int值.我也将B1的范围从0x00为0x0F和其他字节将是0x00对0xFF假定的字节无符号性质.如果字节b1大于0x0F,我将只提取最低4位.简而言之,我想从3个字节中提取int,但只使用20个3字节.(来自b2和b3的总共16位,以及来自b1的4位最低位).int r必须是正数,因为我们从3个字节创建并假设字节的无符号性质.
您必须在这里注意符号扩展-不幸的是,字节是用Java签名的(据我所知,这只不过引起了悲伤)。
因此,您必须做一些遮罩。
int r = (b3 & 0xFF) | ((b2 & 0xFF) << 8) | ((b1 & 0x0F) << 16);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |