【问题标题】:Extracting BinaryString as Integer, need suggestions将 BinaryString 提取为 Integer,需要建议
【发布时间】:2016-06-07 04:55:36
【问题描述】:

PS:我尝试在 Stackoverflow 上搜索许多现有问题,但是 只会给我的查询添加混乱!

10101
11100
11010
00101

将此视为示例输入,我需要将其一一读为BinaryString!然后我需要将它们表示为Integer

显然int x = 20x初始化为十进制整数,

我从其他问题中了解到int y = 0b101y 初始化为二进制Integer

现在,问题是:如果我有一个二进制字符串,我如何将它转换为 int ,就像前面的 0b 一样。我的目标是执行位级别的ORXOR 操作。

即从上面的输入,我需要做10101 ^ 11100

让我知道这是否是解决此类问题的正确方法,谢谢!

【问题讨论】:

  • 提示:没有“十进制整数”或“二进制整数”之类的东西。 int x = 20;int x = 0x14int x = 0b10100; 语句完全等价。整数只是一个整数。如果我有 20 个蛋糕,那么无论我用二进制、十六进制、十进制还是其他方式计算它们的数量都是一样的......
  • @JonSkeet 谢谢,我明白了,所以我认为** 对两个十进制数执行 XOR 操作与对它们的二进制数执行 XOR 相同**。我说的对吗?
  • @shaheen - 是的,检查我的答案。尤其是最后一段。
  • 嗯,有点 - 但更简单的是理解没有“十进制数”这样的东西(对于整数,无论​​如何......使用浮点它变得更加复杂)。有一个数字的十进制表示(作为一个字符串),还有一个数字的二进制表示(作为一个字符串)...
  • 而且,我在哪里可以找到信息来掌握这些概念,处理所有格式的字符串和整数,尤其是在使用 java 编码时?再次感谢!

标签: java string binary integer xor


【解决方案1】:

如果我正确理解了您的问题,您想知道如何将二进制字符串表示为整数。

好吧,您可以执行此任务将二进制字符串转换为整数:

String input = "0b1001";
String temp = input.substring(2);
int foo = Integer.parseInt(temp, 2);

或者,切换回来:

String temp = Integer.toBinaryString(foo);

从上面的输入,我需要做 10101 ^ 11100。

您可以使用整数的正确十进制表示来实现相同的目的。如果你想重新发明轮子,那么

  1. 首先将给定数字的十进制表示转换为二进制字符串(使用步骤 2);
  2. 然后使用步骤 1 转换为整数值;
  3. 对第二个数字重复步骤 1 和 2;和
  4. 最后,对它们执行异或运算。

但是,我看不出它将如何以不同的方式执行/计算。它仍将存储为相同的整数。只是您将获得额外的满足感(就您而言)该数字被读取为整数然后转换为该数字的二进制表示。

【讨论】:

    【解决方案2】:

    试试Integer.parseInt(String s, int radix)。如果二进制字符串无效,它将引发异常,因此您可能需要验证输入。

    String binary = "10001";
    int asInt = Integer.parseInt(binary, 2); // 17
    

    int 支持^(按位异或)运算符。您所要做的就是将二进制字符串转换为int 变量并执行所需的操作。

    【讨论】:

    • 不是我要找的!我需要以 Int 为底的 String 二进制中的值 2 ,即简单地说,我需要该 String 作为数字,比如int asInt = 0b10001
    • @shaheen:你再次误解了int 是什么。这个答案确实向您展示了如何将二进制字符串解析为int
    • @shaheen,您基本上需要使用自定义 BinaryString 类重新实现 XOR 运算符?你的问题很混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多