int i = 10000;
Integer.toBinaryString(i);
如何让Integer.toBinaryString
方法返回前导零?例如,对于i = 1000
,我希望00000000000000000000001111101000
出现,而不是1111101000
。
答案 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 ) );
}
}