我正在生成一些随机密钥,其大小必须为k(位)。我希望它们为二进制格式。不出所料,最左边的位为0的键的大小小于k。我想格式化这些字符串,以便它们具有缺失的零,并且再次具有k位的大小。
事情就是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将显示整数。如果要显示String作为您的字符串,则bg.toString()
必须使用%s
并正确设置其格式。
有关所有格式化程序选项,请参见http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句