我正在生成一些我需要的大小爲k(位)的隨機密鑰。我想要他們在二進制格式。如預期的那樣,其左邊比特爲0的鍵具有小於k的尺寸。我想格式化這些字符串,使它們有缺失的零並再次具有k位的大小。爲什麼我得到IllegalFormatConversionException?
事情是return String.format("%0128d", bg.toString(2));
結果在java.util.IllegalFormatConversionException: d != java.lang.String
。我究竟做錯了什麼?
// Method to generate random keys of k bits each
public String keyGenerator(int k) {
SecureRandom srandom = new SecureRandom();
// Constructor: BigInteger(int numBits, Random rnd)
// Create a random big integer of k bits using secure random
BigInteger bg = new BigInteger(k, srandom);
// If the very left values are zeros they disappear. We need to pad the String to have k bits
if (bg.toString(2).length() < k) {
return String.format("%0128d", bg.toString(2));
}
// Return the bg with radix 2 (= show it in binary)
return bg.toString(2);
}
'%d'用於格式化整數。你給它一個字符串。 – khelwood