我想从多个long类型中获取至少32位,因此我对位数为0xFFFFFFFF的数字执行按位操作"&",但结果不正确,它仍然包含其他位.
例如:
long a = 0x1234567890ab;
long b = (a & 0xffffffff);
Run Code Online (Sandbox Code Playgroud)
我希望b的值为0x567890ab
但在实践中,它仍然是0x1234567890ab
axt*_*avt 45
试试这个:
long a = 0x1234567890ab;
long b = (a & 0xffffffffL);
Run Code Online (Sandbox Code Playgroud)
0xffffffff是一个文本类型的int,用于执行&与long它的推动键入long通过符号扩展,因此它变成0xffffffffffffffff.要避免符号扩展,您需要将其写为类型的文字long:0xffffffffL.
| 归档时间: |
|
| 查看次数: |
15720 次 |
| 最近记录: |