【问题标题】:How to convert Binary String to int array?如何将二进制字符串转换为 int 数组?
【发布时间】:2016-05-07 16:29:15
【问题描述】:

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

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

在这种情况下,我会在二进制中将症状位设置为 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

【问题讨论】:

  • 您是否真的尝试过为此编写代码?你遇到什么问题了吗?
  • 刚刚添加了我试过的代码。
  • 有趣的是,有人突然对我提出的几乎所有问题都投了反对票。好吧,我没有参加任何 CS 课程,而是尝试自学。如果这让你们中的任何一个“专家”感到困扰,对此深表歉意。我非常感谢真正专家的每一个帮助和回答。
  • 如果您被连续投票否决,系统可能会对其进行拍照并回滚;如果不是,您可以标记一个以引起适度注意。这也可能只是糟糕的一天。\
  • 不是我的反对意见,但如果您的问题一直被反对,那么您应该考虑咨询有关 how to ask questions here 的帮助页面。

标签: java arrays string binary int


【解决方案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]);
}

【讨论】:

  • 我尝试了你建议的方式。但仍然无法正常工作。有问题的代码已更新。
  • 这不是你打印数组的方式......让我编辑我的答案给你看
  • ChiefTwoPencils 也帮助我找到了答案。你的也是正确的。也谢谢你!
【解决方案2】:

我知道症状Bit.split(" ") 不正确。但不知道如何 进一步完善它。

是的,你快到了,但一定犯了一些小错误。

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

这会给你你认为你得到的数组。但是您也没有正确打印元素。您应该索引到数组以获取要打印的元素。就这样……

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,没问题;很乐意提供帮助。
【解决方案3】:

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

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

然后while循环,你可以轻松做到:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2012-02-14
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多