如何将二进制字符串转换为int数组?

时间:2016-01-29 19:57:13

标签: java arrays string binary int

假设我有一个整数,我首先将其转换为二进制字符串。

            int symptomsM = 867;
            String symptomsBit = Integer.toBinaryString(symptomsM);

在这种情况下,我将使用binaryBit作为二进制的1101100011。

但是如何进一步将其转换为具有相同内容的Int Array,例如
 symptomsBitArr[] = {1,1,0,1,1,0,0,0,1,1}

好。这是我尝试过的。我知道symptomsBit.split(" ")并不正确。但不知道如何进一步改进它。

            symptomsM = 867;
            String symptomsBit = Integer.toBinaryString(symptomsM);
            String[] symptomsBitArr = symptomsBit.split(" ");
            System.out.println("symptomsBit: " + symptomsBit);
            System.out.println("symptomsBitArray: " + symptomsBitArr);
            int[] symptomsArray = new int[symptomsBitArr.length];
            for (int i = 0; i < symptomsBitArr.length; i++) {
                 symptomsArray[i] = Integer.parseInt(symptomsBitArr[i]);
                 System.out.println("symptomsArray: " + symptomsArray);
                }

我尝试了Idos建议的方式如下:

            symptomsM = 867;
            String symptomsBit = Integer.toBinaryString(symptomsM);
            String[] symptomsBitArr = symptomsBit.split(" ");
            System.out.println("symptomsBit: " + symptomsBit);
            System.out.println("symptomsBitArray: " + symptomsBitArr);
            int[] symptomsArray = new int[symptomsBitArr.length];
            for (int i = 0; i < symptomsBitArr.length; i++) {
                 //symptomsArray[i] = Integer.parseInt(symptomsBitArr[i]);
                 symptomsArray[i] = Integer.parseInt(String.valueOf(symptomsBit.charAt(i)));
                 System.out.println("symptomsArray: " + symptomsArray);
                }

但它仍然不起作用。这是输出:

symptomsBitArray: [Ljava.lang.String; @2a139a55
symptomsArray: [I@15db9742

3 个答案:

答案 0 :(得分:0)

我认为这应该可以解决问题:

String symptomBit = "1010";
for(int i = 0; i < symptomsBitArr.length; i++) {
    symptomsBitArr[i] = Integer.parseInt(String.valueOf(symptomsBit.charAt(i)));
}

// symptomsBitArr = [1,0,1,0]

// print array here
for (int j = 0; j < symptomsBitArr.length; j++) {
    System.out.println("symptomsArray: " + symptomsArray[j]);
}

答案 1 :(得分:0)

  

我知道symptomsBit.split(“”)不正确。但不知道该怎么做   进一步改善它。

是的,你几乎就在那里,但一定是犯了一些小错误。

首先,split()不正确,因为您尝试将其拆分为" ",但您需要的是"",因为它是一个连续的字符串。

这将为您提供您认为正在获得的阵列。但是你也不能正确打印元素。您应该索引到数组以获取要打印的元素。像这样......

int symptomsM = 867;
String symptomsBit = Integer.toBinaryString(symptomsM);
String[] symptomsBitArr = symptomsBit.split("");
System.out.println("symptomsBit: " + symptomsBit);
System.out.println("symptomsBitArray: " + symptomsBitArr);
int[] symptomsArray = new int[symptomsBitArr.length];
for (int i = 0; i < symptomsBitArr.length; i++) {
    symptomsArray[i] = Integer.parseInt(symptomsBitArr[i]);
    System.out.println("symptomsArray: " + symptomsArray[i]);
} 

答案 2 :(得分:0)

我猜你需要二进制字符串的每个值都是 int 类型。

 String binString = Integer.toBinaryString(N);
 char[] intBinaryArray = binString.toCharArray();

然后在循环时,你可以很容易地做到:

   for (int i = 0; i < binString.length() - 1; i++) {
            if (Character.getNumericValue(intBinaryArray[i])