如何将整数数组转换为二进制?

问题描述

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 s数组(包含输入字符串的二进制格式),但有一个警告。

例如:
如果输入数组是:2 3 7 10
二进制字符串数组将是: 10
11
111
1010

但是我希望输出数组如下所示:
0010
0011
0111
1010

#2
如果输入数组是:2 10 20
二进制字符串数组将是:
10
1010
10100

但是我希望输出数组如下所示:
00010
01010
10100

解决方法

要使所有二进制字符串与最长6的长度匹配,您可以先找到最长的长度,然后使用StringString#format用零填充。

String#replace
,

您可以先计算数组的最大二进制字符串长度,然后使用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];
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...