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

3

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

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

在这种情况下,我会将symptomsBit转换为二进制数字1101100011。
但是我该如何进一步将其转换为具有相同内容的Int数组,例如 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

你有尝试编写这个代码吗?你遇到了什么问题吗? - John Bollinger
刚刚添加了我尝试过的代码。 - Orangeblue
有趣的是,某人突然对我提出的几乎每个问题进行了负面评价。好吧,我没有参加任何计算机科学课程,而是试图自学。如果这让你们中的任何“专家”感到困扰,对此很抱歉。我真的很感激真正专家所提供的每一份帮助和答案。 - Orangeblue
如果您的帖子被连续踩,系统很可能会检测到并将其撤回;如果没有,您可以标记其中一个以引起管理人员的注意。这也可能只是个不好的一天。 - ChiefTwoPencils
不是我给你的负评,但如果你的问题一直被负评,那么你应该考虑查阅有关如何在这里提问的帮助页面。 - John Bollinger
谢谢John和Chief。我还在学习中,有时候会犯一些愚蠢的错误。 - Orangeblue
3个回答

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

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]);
}

我尝试了你建议的方法。但仍然不起作用。代码已更新在问题中。 - Orangeblue
那不是打印数组的方法...让我编辑我的答案来展示给你看。 - Idos
ChiefTwoPencils 也帮我找到了答案。你的答案也是正确的。谢谢你! - Orangeblue

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]);
} 

@Orangeblue,没关系;很高兴能帮忙。 - ChiefTwoPencils

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]) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接