You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Arrays.toString()输出的数组方括号与末尾多余0?无循环实现十进制转二进制

解决十进制转二进制的几个问题

嘿,我来帮你搞定这几个困惑!咱们一个个来聊:

1. 无需循环的实现方式

其实Java标准库已经帮你做好这件事啦!直接用Integer.toBinaryString()方法,传入你的十进制整数,就能直接得到对应的二进制字符串,完全不用自己写循环或者数组,简单到爆:

int b = 17;
System.out.println(Integer.toBinaryString(b)); // 直接输出 "10001"

这个方法底层已经帮你处理了所有转换逻辑,既高效又省心。

2. 去除数组末尾的多余0

如果是出于学习目的,一定要用数组来实现的话,你可以利用循环结束后记录的i值(它正好是二进制有效位的个数),把原数组复制成一个长度为i的新数组,这样就自动去掉末尾的多余0了:

int b=17,i=0;
int s[]=new int[10];
while(b>0) {
    s[i]=(b%2);
    b=b/2;
    i++;
}
// 复制出只包含有效位的新数组
int[] validBits = Arrays.copyOf(s, i);
System.out.println(Arrays.toString(validBits)); // 输出 [1, 0, 0, 0, 1]

3. 处理Arrays.toString()的输出格式

要是你想用Arrays.toString()得到没有方括号和多余0的纯二进制字符串,那可以先拿到上面的有效数组validBits,然后对Arrays.toString()的结果做字符串替换:

String binaryStr = Arrays.toString(validBits)
    .replace("[", "") // 去掉左方括号
    .replace("]", "") // 去掉右方括号
    .replace(", ", ""); // 去掉逗号和空格
System.out.println(binaryStr); // 输出 "10001"

总结一下:如果只是需要输出十进制对应的二进制字符串,优先用Integer.toBinaryString(),这是最简洁的方案;如果是练习手写转换逻辑,那用数组复制+字符串替换的方式也能达到你的需求。

内容的提问来源于stack exchange,提问作者Siddhant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:17:43