【发布时间】:2012-09-25 09:16:05
【问题描述】:
我有一个任务,我必须将十六进制转换为 16 位二进制字符串,然后使用按位运算符比较其中两个。我有一个 for 循环,它对字符串生成器字符串执行 a.charAt[i] 和 b.charAt[i]。现在,我希望它输出一个二进制数,但我已经达到了每次执行该行时,它给我的数字不是 0 或 1。它给了我 2 个数字(2 和 3)。我做错了什么?
一些代码:
int bin = 0;
hex = hex.replaceFirst("0x", "");
bin = Integer.parseInt(hex, 16);
hex = String.format("%16s", Integer.toBinaryString(bin));
return hex;
我要评估的两个十六进制数是FFF7 和0001。我已经成功地将它们转换为二进制字符串。我也不知道为什么,但是前面的零没有出现,只有空格:/
我已经在网上广泛搜索了几个小时,但似乎找不到我遇到的问题。
【问题讨论】:
-
您应该包含您的代码。它有帮助。
-
像
&这样的二元运算同时对两个数字的所有位进行操作,而不是对它们各自的位进行操作。这就是为什么x & y的结果可能不是0或1的原因。
标签: java binary bit-manipulation hex