我如何获取一个字符串,将所述字符串转换为二进制,然后获取每个 1 或 0 并将其作为值添加到数组中

How do I take a string, convert said string to bianary, and then take each 1 or 0 and add it as a value in an array

我正在对 java 中的网格进行一些测试,以及如何用 1 和 0 生成它们,1 是 [+],0 是 [ ]。

(TLDR):

我希望能够输入单词,将其转换为二进制,并将每个单独的 1 和 0 添加到数组中

我设置网格的方式是:


        // code that tells method how to generate the grid
         int[] GRIDCODE3x3_1 = new int[]{
                  0, 1, 0,
                  1, 1, 1,
                  0, 1, 0
          };
         public void fillGridSpec(int[] x) {
         System.out.println("\n");
         int count = 0;
             String gridLine = " ";
             for(int p = 0; p < gridHeight; p++) {
                 gridLine = " ";
                 String[] gridArray = new String[gridWidth];
                 for(int q = 0; q < gridWidth; q++) {
                     if(x[count] == 1) {
                         gridArray[q] = "[+] ";
                         count++;
                     } else {              
                         gridArray[q] = "[ ] ";
                         count++;
                     }
                     gridLine += gridArray[q];
                 }
                 System.out.println(gridLine);
             }
        } 

输出将是:

[ ] [+] [ ]
[+] [+] [+]
[ ] [+] [ ]

话虽如此,我想举例说明我希望它做什么。

假设字符串是 a

这个二进制文件是01100001,我需要把它变成0,1,1,0,0,0,0,1所以输出是

[ ] [+] [+] [ ] [ ] [ ] [ ] [+]

但我还需要它是可重复的,就像字符串是 Hello World

(二进制):

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

(这里的逗号数量是多余的,所以我会明白你知道我需要将其转换成什么,以及输出是如何工作的)

如果您需要对我的问题进行任何澄清,请在评论中提问,我会尽快回复您。

仍然不确定你在问什么,但是

String a = "01001000";
StringBuilder buf = new StringBuilder();

for (char c: a.toCharArray()) {
    buf.append("[");
    if (c == '1') {
        buf.append("+");
    }
    buf.append("] ");
}

System.out.println(buf);

编辑

如果输入是char,可以转换成二进制String,如

    String a = Integer.toBinaryString('a');
    System.out.println(a);
    StringBuilder buf = new StringBuilder();

    for (char c: a.toCharArray()) {
        buf.append("[");
        if (c == '1') {
            buf.append("+");
        }
        else {
            buf.append(" ");
        }
        buf.append("] ");
    }

    System.out.println(buf);

根据你的主题,我不确定你想要的是:

String str = "Hello World";
for (int i = 0; i < str.length(); i++) {
    String binStr = String.format("%8s", Integer.toBinaryString(str.charAt(i))).replace(' ', '0');

    int[] intArray = new int[binStr.length()];
    for (int j = 0; j < binStr.length(); j++) {
        intArray[j] = Integer.valueOf(String.valueOf(binStr.charAt(j)));

        // This also works 
        //intArray[j] = Character.getNumericValue(binStr.charAt(j));
    }
    System.out.println(Arrays.toString(intArray));
}

控制台输出

[0, 1, 0, 0, 1, 0, 0, 0]
[0, 1, 1, 0, 0, 1, 0, 1]
[0, 1, 1, 0, 1, 1, 0, 0]
[0, 1, 1, 0, 1, 1, 0, 0]
[0, 1, 1, 0, 1, 1, 1, 1]
[0, 0, 1, 0, 0, 0, 0, 0]
[0, 1, 0, 1, 0, 1, 1, 1]
[0, 1, 1, 0, 1, 1, 1, 1]
[0, 1, 1, 1, 0, 0, 1, 0]
[0, 1, 1, 0, 1, 1, 0, 0]
[0, 1, 1, 0, 0, 1, 0, 0]