这里的错误是什么?

时间:2016-03-08 00:48:46

标签: java android

int i = 10000;
Integer.toBinaryString(i);

如何让Integer.toBinaryString方法返回前导零?例如,对于i = 1000,我希望00000000000000000000001111101000出现,而不是1111101000

1 个答案:

答案 0 :(得分:1)

如果你想用零填充结果,你可以这样做:

String raw = Integer.toBinaryString(i);
String padded = "0000000000000000".substring(raw.length()) + raw;

这里我选择了16位数的宽度,您可以通过字符串中的零数来调整宽度。

注意,如果i > 2^16 - 1可能会失败,那么您将需要防范(32个零将是一种方法)。

修改

这是一个更复杂的版本,格式化为最小的8位,16位,24位或32位,其中包含结果:

public class pad {
    public static String pbi ( int i ) {
        String raw = Integer.toBinaryString(i);
        int n = raw.length();
        String zeros;
        switch ((n-1)/8) {
            case 0: zeros = "00000000";                         break;
            case 1: zeros = "0000000000000000";                 break;
            case 2: zeros = "000000000000000000000000";         break;
            case 3: zeros = "00000000000000000000000000000000"; break;
            default: return raw;
        }
        return zeros.substring(n) + raw;
    }

    public static void main ( String[] args ) {
        Scanner s = new Scanner(System.in);
        System.out.print("Enter an integer : ");
        int i = s.nextInt();
        System.out.println( pbi( i ) );
    }
}