1

我想在 a 和 b (均为十进制)之间进行“与”运算。b 的值在代码内部确定。结果,如果我这样写:

String g= Integer.toHexString(b);
int k=a & g;

我得到错误,因为它应该是这样的:

int k=a & 0xFF;

不知何故,0x 应该在十六进制值之前,同时它不能是字符串类型。对于第二个操作数可以是变量的情况,我在 Internet 上没有找到任何示例。我应该手动编写一个 for 循环来逐位应用 AND 操作,还是有一个直接的解决方案?我感谢您的帮助。

4

3 回答 3

6

如果 b 已经是一个整数,您的代码应该是:

int k = a & b;

一个数字就是一个数字。0xFFvs的人类表示255对 & 运算符没有任何影响。计算机没有“十六进制整数”与“十进制整数”之类的东西,它只是一个值。不同的书写方式是人性化的。

于 2012-12-20T22:42:27.167 回答
3

只需这样做:

int k = a & b;

在应用运算符之前无需将 an 转换int为十六进制&。事实上,这是一个错误,因为返回的值toHexString()是 a String,并且该&运算符仅适用于整数。

于 2012-12-20T22:42:57.360 回答
1

当您在 java 代码中编写十六进制文字 0xFF 时,它与编写整数文字 255 相同。

因此,将整数转换为字符串是没有意义的,执行 a & b 就足够了。十六进制表示法就是您指定文字的方式

于 2012-12-20T22:45:05.837 回答