我如何获取一个字符串,将所述字符串转换为二进制,然后获取每个 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]
我正在对 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]