为什么会收到IllegalFormatConversionException?

阿文迪努斯

我正在生成一些随机密钥,其大小必须为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);

}
JFPicard

%d将显示整数。如果要显示String作为您的字符串,则bg.toString()必须使用%s并正确设置其格式。

有关所有格式化程序选项,请参见http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章