繁体   English   中英

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

[英]How to convert Binary String to int array?

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

            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

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

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

我知道 conditionsBit.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]);
} 

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

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

然后在循环时,您可以轻松地执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM