如何将整数数组转换为二进制?
How do I convert an array of integers to binary?
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
String[] bin = new String[n];
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
}
以上代码会将整个整数数组转换为 String
数组(包含输入字符串的二进制格式),但有一个警告。
例如:
如果输入数组是:2 3 7 10
二进制字符串数组将是:
10
11
111
1010
但我希望输出数组如下所示:
0010
0011
0111
1010
#2
如果输入数组是:2 10 20
二进制字符串数组将是:
10
1010
10100
但我希望输出数组如下所示:
00010
01010
10100
要让所有的二进制字符串都匹配最长的String
的长度,可以先找到最长的长度,然后用String#format
和String#replace
补零。
int maxLen = 0;
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
maxLen = Math.max(maxLen, bin[i].length());
}
for (int i = 0; i < n; i++) {
if (bin[i].length() != maxLen)
bin[i] = String.format("%" + maxLen + "s", bin[i]).replace(' ', '0');
System.out.println(bin[i]);
}
您可以先计算数组的最大二进制字符串长度,然后使用 Collections.nCopies
在每个二进制字符串的字符串表示之前添加额外的 0
。
int mx = 0;
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
mx = Math.max(mx, bin[i].length());
}
for (int i = 0; i < n; i++) {
bin[i] = String.join("", Collections.nCopies(mx - bin[i].length(), "0")) + bin[i];
}
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
String[] bin = new String[n];
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
}
以上代码会将整个整数数组转换为 String
数组(包含输入字符串的二进制格式),但有一个警告。
例如:
如果输入数组是:2 3 7 10
二进制字符串数组将是:
10
11
111
1010
但我希望输出数组如下所示:
0010
0011
0111
1010
#2
如果输入数组是:2 10 20
二进制字符串数组将是:
10
1010
10100
但我希望输出数组如下所示:
00010
01010
10100
要让所有的二进制字符串都匹配最长的String
的长度,可以先找到最长的长度,然后用String#format
和String#replace
补零。
int maxLen = 0;
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
maxLen = Math.max(maxLen, bin[i].length());
}
for (int i = 0; i < n; i++) {
if (bin[i].length() != maxLen)
bin[i] = String.format("%" + maxLen + "s", bin[i]).replace(' ', '0');
System.out.println(bin[i]);
}
您可以先计算数组的最大二进制字符串长度,然后使用 Collections.nCopies
在每个二进制字符串的字符串表示之前添加额外的 0
。
int mx = 0;
for (int i = 0; i < n; i++) {
bin[i] = Integer.toBinaryString(arr[i]);
mx = Math.max(mx, bin[i].length());
}
for (int i = 0; i < n; i++) {
bin[i] = String.join("", Collections.nCopies(mx - bin[i].length(), "0")) + bin[i];
}