在java中将十进制数转换为二进制数而不显示前导零

时间:2016-03-07 00:38:42

标签: java math binary decimal

这是我在Java中的功能:

pd.melt

它适用于转换为不以0开头的数字的数字,如果数字在开始时应该为零,则不会记录它,有人能告诉我原因吗?

例如,如果我打印出来

unit它返回

  

1101

哪个是正确的,但是如果我打印出来

public static String convertFromDecimal(int number, int base) { String result = ""; /* * This while loop will keep running until 'number' is not 0 */ while(number != 0) { result = (number%base) + result; // Appending the remainder number = number / base; // Dividing the number by the base so we can get the next remainder } // If the number is already 0, then the while loop will ignore it, so we will return "0" if(result == "") { return "0"; } return result; } ,我明白了

  

111001101

实际答案是

  

0000000111001101

如果有人知道为什么我会感谢你的帮助,那么它与没有领先零的答案相同,谢谢。

编辑我的问题不同,因为我不想要16位,我想要给定小数的二进制数,像this这样的计算器可以解释我想要的东西。

2 个答案:

答案 0 :(得分:0)

我假设您希望将所有答案格式化为短片(16位)。

在这种情况下,只需检查当前字符串的长度,并根据需要添加零。

int zeroesRemaining = 16 - result.length();
for (int i = 0; i < zeroesRemaining; i++) {
    result = "0" + result;
}

或者,如果您想更快地执行此操作,请使用StringBuilder。

int zeroesRemaining = 16 - result.length();
StringBuilder tempBuilder = new StringBuilder(result);
for (int i = 0; i < zeroesRemaining; i++) {
    tempBuilder.insert(0, 0); //inserts the integer 0 at position 0 of the stringbuilder
}
return tempBuilder.toString(); //converts to string format

也可能有一个格式化程序可以做到这一点,但我不知道。

如果要将零的数量更改为最接近的整数基元,只需将​​zeroesRemaining设置为(最大2的幂,大于位数)减去(位数)。

答案 1 :(得分:0)

由于您需要固定长度的结果,以8位为一组,最简单的方法是将0附加到result的前面,直到其长度为8的倍数。

就像

一样简单
wile (result.length() % 8 > 0) 
{
    result = "0" + result;
}
return result;