String Java:从字符串到BigInteger再到二进制

String Java:从字符串到BigInteger再到二进制,string,binary,java.util.scanner,biginteger,String,Binary,Java.util.scanner,Biginteger,我有一个问题,我想把我的输入字符串转换成一个BigInteger,而输出应该是一个二进制字符串。我使用了此代码,但它只能读取“0”和“1” 当我将其更改为:biginger big=newbiginger(输入,16) 我可以写十六进制数,但没有空格 我想要的是,我可以写任何字符串,程序应该在字符串中给我它的二进制值。像“hey world”这样的字符串在10进制中没有任何有意义的数字表示,因此我建议改为输出适当的消息 Scanner scan = new Scanner(System.in);

我有一个问题,我想把我的输入字符串转换成一个BigInteger,而输出应该是一个二进制字符串。我使用了此代码,但它只能读取“0”和“1”

当我将其更改为:
biginger big=newbiginger(输入,16)
我可以写十六进制数,但没有空格

我想要的是,我可以写任何字符串,程序应该在字符串中给我它的二进制值。

像“hey world”这样的字符串在10进制中没有任何有意义的数字表示,因此我建议改为输出适当的消息

Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
try {
    BigInteger big = new BigInteger(input); // default constructor is base 10
    System.out.println(big.toString(2));
}
catch (NumberFormatException){
    System.out.println("Input was not a decimal number");
}

如何确定输入字符串位于哪个基中?您是否将其限制为二进制、八进制、十进制或十六进制?用户是否会在数字(例如0xDEADBEEF)之前添加字符以表示基数?@user1071777否,输入应为普通字符(字母和数字),但输出应为二进制。不,用户不需要输入任何东西来表示基数。我想说的是,你怎么知道输入字符串“345”是以8为基数,还是以10为基数,还是以16为基数,还是以6为基数?在不知道基数的情况下,可以有任意数量的二进制表示。例如,8进制的345是11100101,10进制的345是101011001,等等@user1071777好的,我明白你的意思,所以输入的ofc不应该只是数字,我的输入字符串可以是“hey world”的。当输入包含数字时,它们应以10为基数。我不知道你是否可以将字符串(“hey world”)设置为基数,但如果可以的话,我也希望以10为基数。好的,谢谢这帮了我一点忙,如果你能给我一个代码,我可以将我的输入转换为十进制数,并将其用于BigInteger big,那就太好了。不管怎样,谢谢BigInteger的默认构造函数尝试将输入解析为十进制(以10为基数)表示。好的,但当我键入类似“test”的内容时,它会显示:NumberFormatException:对于输入字符串:“test”,这就是我要做的,首先将输入转换为十进制值,然后将其提供给BigInteger。是的,这是预期的,因为“test”实际上不是以10为基数的数字。try catch块应该捕获NumberFormatException并输出适当的消息。如果您不想使用try-catch,您可以研究或创建自己的isNumber方法来使用。好的,我已经找到了问题和解决方案,尽管我首先必须将输入转换为十六进制。然后将其转换为二进制。但我感谢你的帮助;)谢谢
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
try {
    BigInteger big = new BigInteger(input); // default constructor is base 10
    System.out.println(big.toString(2));
}
catch (NumberFormatException){
    System.out.println("Input was not a decimal number");
}