toBinaryString()方法

最近在刷剑指offer,需要用到十进制转换成二进制的方法。

Integer类中有静态方法:

toBinaryString(int i):返回int变量的二进制表示的字符串。
toHexString(int i):返回int变量的16进制字符串。
toOctalString(int i):返回int变量的8进制表示字符串。

具体用法:

toBinaryString(int i)为例,将整数n转换成字符串(二进制)。

String str = Integer.toBinaryString(n)

源码部分

三种静态方法都使用了同一个函数toUnsignedString0(int val, int shift)得到返回值,函数源码如下:

  private static String toUnsignedString0(int val, int shift) {
        // assert shift > 0 && shift <=5 : "Illegal shift value";
        int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
        int chars = Math.max(((mag + (shift - 1)) / shift), 1);
        char[] buf = new char[chars];

        formatUnsignedInt(val, shift, buf, 0, chars);
        // Use special constructor which takes over "buf".
        return new String(buf, true);
    }

代码分为两步:
1.计算出二/八/十六进制的字符数组的长度
2.使用formatUnsignedInt方法填充字符数组,得到所需进制表示的字符串并返回。

你可能感兴趣的:(toBinaryString()方法)