数字转换算法?


public static String DeciToBin(int i)
{
    String zero="0";
    String one="1";
    String str = "";
    if(i==0)
    {
        return zero;
    }
    if(i==1)
    {
        return one;
    }
    for(;i<2;i/=2)
    {
        if(i%2==1)
        {
            str= one+str;
        }
        if(i%2==0)
        {
            str=zero+str;
        }
    }
    return str;
}

当i大于1时没有结果。在这些行中没有错误或谨慎。我错过了什么?

您需要测试是否i>0不停止,如果您得到的数字为2或更多。

你可以把它简化很多。

public static String deciToBin(int i) {
    String str = "";
    do {
        str = (i & 1) + str;
        i >>>= 1;
    } while (i != 0);
    return str;
}

更好的方法是使用StringBuilder

public static String deciToBin(int i) {
    StringBuilder str = new StringBuilder();
    do {
        str.append(i & 1);
        i >>>= 1;
    } while (i != 0);
    return str.reverse().toString();
}

您可以在java中使用以下方法将整型转换为二进制。

Integer.toBinaryString(a);

在java中可以使用下面的方法将int转换为任意base

Integer.toString(Number, Base);

最新更新