這是一個老把戲,創建一個字符串與16 0的然後附加你的String.format(「%S」,Integer.toBinaryString得到了修整二進制字符串(1) )並使用最右邊的16個字符,從而消除任何前導0。更好的是,創建一個函數,讓您指定需要多長時間的二進制字符串。當然也有可能是其他bazillion的方式來做到這一點,包括圖書館,但我加入這個職位,以幫助朋友:)
public class BinaryPrinter {
public static void main(String[] args) {
System.out.format("%d in binary is %s\n", 1, binaryString(1, 4));
System.out.format("%d in binary is %s\n", 128, binaryString(128, 8));
System.out.format("%d in binary is %s\n", 256, binaryString(256, 16));
}
public static String binaryString(final int number, final int binaryDigits) {
final String pattern = String.format("%%0%dd", binaryDigits);
final String padding = String.format(pattern, 0);
final String response = String.format("%s%s", padding, Integer.toBinaryString(number));
System.out.format("\npattern = '%s'\npadding = '%s'\nresponse = '%s'\n\n", pattern, padding, response);
return response.substring(response.length() - binaryDigits);
}
}
您是否嘗試過使用'%016s'? – 2010-12-12 11:32:42
@Deniz是的,它與'異常在線程「主」java.util.FormatFlagsConversionMismatchException:Conversion = s,Flags = 0''失敗。 – khachik 2010-12-12 11:34:22
看看這個:http://stackoverflow.com/a/15124135/1316649 – fstang 2014-01-17 03:14:53