java - 将单个二进制字符串值拆分为数组

标签 java arrays string split binary

这不可以吗?我之前使用过 split() 方法来拆分字符串并将它们存储到数组中。但我似乎无法对二进制字符串值执行此操作。

例如:我希望将“100000”拆分并存储在一个数组中,如下所示:someArray = {1,0,0,0,0,0} 但我似乎不能那样做。它一直导致这样的结果:someArray = {100000,0,0,0,0, ...}

这是我的:

    result = Integer.toBinaryString(sum);

    String[] temp = result.split(" ");

    for(int num: resultArray) {
        for(String s: temp) {
            resultArray[num] = Integer.parseInt(temp[s]);
        }
    }

    for(int num: resultArray) {
        System.out.print(num + ",");
    }

最佳答案

尽量贴近代码的精神(不一定是最有效的做事方式):

您需要根据“无”拆分 - 即

String[] temp = result.split("");

根据更新的问题更新代码:

    String result;
Integer sum = 123;
int[] resultArray = new int[32];
Integer ii;
result = Integer.toBinaryString(sum);

    String[] temp = result.split("");
    ii = 0;
    for(String s: temp) {
      try {
        resultArray[ii++] = Integer.parseInt(s);
      } catch (NumberFormatException e) {
         // do nothing
      }
    }

    int n = ii;
    for (ii = 0; ii < n; ii++) {
      System.out.print(resultArray[ii]);
    }
    System.out.println();

输出:

01111011

我将数组的大小限制为 32 - 对于 int 来说是典型的……如果您期望 sum 可能是更长的类型,您需要相应地进行调整。

顺带一提,用起来会更快

string[] temp = result.toCharArray();
ii = 0;
for(char s: temp) {
        resultArray[ii++] = s - '0';
}
int n = ii;
for (ii = 0; ii < n; ii++) {
      System.out.print(resultArray[ii]);
}

因为您知道 result 是纯数字。

关于java - 将单个二进制字符串值拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373842/

相关文章:

C++ - 像git一样获取2个字符串的 "difference"

r - 使用R提取字符串中 "+"和 "*"符号的位置

java - [sum] 类型的聚合器无法接受子聚合

java - Android 6.0 Manifest.xml 中的 <uses-permission> 与 <permission>

java - 将 2 个 String[][] 和 1 个 String[] 合并为一个 String[][] 时出错

c - 找不到段错误

java - 双击运行 Java 应用程序

Java:更好的颜色选择算法

javascript - 如何比较对象内的值具有不同序列的数组javascript

c++ - 将 std::__cxx11::string 转换为 std::string