そのため、BigInteger を使用してバイナリ文字列を数値表現に変換していたところ、奇妙なエラーが発生してしまいました。
この行のコードが実行されると、NumberFormatException が発生します。
BigInteger temp = new BigInteger(strbuf.toString(), 2);
ここで、strbuf には次の文字列があります (0 と 1 のみで構成されています)。
"1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010"
最初は、文字列または値が大きすぎるのではないかと思いましたが、次のスタンドアロン Java クラスは問題なくコンパイルおよび実行されます。
import java.math.BigInteger;
class test {
public static void main(String[] argv) {
StringBuffer strbuf = new StringBuffer("1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010");
BigInteger big = new BigInteger(strbuf.toString(), 2);
System.out.println(big);
}
}
ここに欠けているものはありますか?明らかに同じ値を持つ同じコードがメイン アプリケーションで実行できないのはなぜですか?
例外メッセージ:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1001110000000100"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.math.BigInteger.<init>(Unknown Source)
at org.app.star.pad(star.pad:42)