Đây là một thủ thuật cũ, tạo ra một chuỗi với 16 0 của sau đó nối các chuỗi nhị phân tỉa bạn nhận được từ String.format ("% s", Integer.toBinaryString (1)) và sử dụng tối đa 16 ký tự nhất, băm nhỏ bất kỳ số 0 hàng đầu nào. Tốt hơn, hãy tạo một hàm cho phép bạn chỉ định thời gian của chuỗi nhị phân bạn muốn. Tất nhiên có thể là một bazillion cách khác để thực hiện điều này bao gồm thư viện, nhưng tôi thêm bài này để giúp đỡ một người bạn :)
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);
}
}
Bạn đã thử sử dụng '% 016s' chưa? –
@ Deniz có, nó không thành công với "Ngoại lệ trong chuỗi" chính "java.util.FormatFlagsConversionMismatchException: Conversion = s, cờ = 0' – khachik
hãy xem xét điều này: http://stackoverflow.com/a/15124135/1316649 – fstang