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

时间:2014-01-27 05:48:24

标签: 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 + ",");
    }

2 个答案:

答案 0 :(得分:0)

努力接近代码的精神(不一定是最有效的做事方式):

你需要分开“没有” - 即

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纯粹是数字。

答案 1 :(得分:0)

首先将String转换为char数组,然后将其转换为int

String str = "100000";
char ch []  = str.toCharArray();
int [] temp = new int [ch.length];
for (int i = 0; i < ch.length; i++) {
     temp[i] = Integer.parseInt(""+ch[i]);
}