Java 为什么我会得到一个非法的FormatConversionException?
我正在生成一些随机密钥,我需要大小为k(位)。我想要二进制格式的。正如预期的那样,最左边位为0的键的大小小于k。我想格式化这些字符串,使它们有丢失的零,并再次具有k位的大小 问题是Java 为什么我会得到一个非法的FormatConversionException?,java,format,Java,Format,我正在生成一些随机密钥,我需要大小为k(位)。我想要二进制格式的。正如预期的那样,最左边位为0的键的大小小于k。我想格式化这些字符串,使它们有丢失的零,并再次具有k位的大小 问题是返回String.format(“%0128d”,bg.toString(2))导致java.util.IllegalFormatConversionException:d!=java.lang.String。我做错了什么 // Method to generate random keys of k bits each
返回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);
}
//生成每个k位随机密钥的方法
公共字符串键生成器(int k){
SecureRandom srandom=新的SecureRandom();
//构造函数:BigInteger(int numBits,随机rnd)
//使用secure random创建k位的随机大整数
BigInteger bg=新的BigInteger(k,srandom);
//如果最左边的值是零,它们就会消失。我们需要填充字符串以获得k位
if(bg.toString(2.length()
%d用于显示整数。如果要将字符串显示为bg.toString()
您必须使用%s
并正确设置格式
有关所有格式化程序选项,请参阅。%d
用于格式化整数。你在给它一个字符串。我觉得很愚蠢,尽管返回string.format(“%0128s”,bg.toString(2))代码>也不起作用。我得到一个java.util.FormatFlagsConversionMismatchException:Conversion=s,Flags=0
异常。请检查以BigDecimal开头的段落。%0不允许用于字符转换:即:不能用0填充字符串。。。。