这是我在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这样的计算器可以解释我想要的东西。
答案 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;