如:Integer.toBinaryString(0x3)转换成的二进制为11,如何才能补慢4位,转换成0011?(字符串++除外)java api里面的算法看不懂,虚心请教,谢谢!

解决方案 »

  1.   

    为什么是占 4 位啊?Integer 类型的数据应该是占 32 位啊?“11”前面应该添 30 个“0”的。
      

  2.   

    拿原始的toBinaryString改的
    public static void main(String[] args) {
    System.out.println(toBinaryString(6053));
    }

    final static char[] digits = {'0','1'};

    public static String toBinaryString(int i) {
    char[] buf = new char[32];
    int pos = 32;
    int mask = 1;
    do {
    buf[--pos] = digits[i & mask];
        i >>>= 1;
    } while (pos > 0);

    return new String(buf, pos, 32);
    }
      

  3.   

    public class Test1 {
        
        public static void main(String[] args) {
            System.out.println(toFullBinaryString(0x3));
        }
        
        public static String toFullBinaryString(int num) {
            char[] chs = new char[Integer.SIZE];
            for(int i = 0; i < Integer.SIZE; i++) {
                chs[Integer.SIZE - 1 - i] = (char)((num >> i & 1) + '0');
            }
            return new String(chs);
        }
    }