0

ユーザーからの入力を文字列として取り込み、この文字列を半分に分割し、それらの文字列を 16 進数の整数に変換しようとしています。これらの 16 進数の int を TEA 暗号化アルゴリズムで使用する必要があります。GUIビルダー用にnetbeansでこのコードを作成しています。

私の現在のコード

//Getting initial text
String arg = input.getText();

//establishing Left and Right for TEA
int[] v = new int[2];

// Splitting the string into two.
StringBuilder output2;
for (int x = 0; x < 2; x++ ) {
    output2 = new StringBuilder();
    for (int i = 0; i < arg.length()/2; i++) {
        if (x == 1) 
            output2.append(String.valueOf(arg.charAt(arg.length()/2 + i)));
        else 
            output2.append(String.valueOf(arg.charAt(i)));  
    }
    //converting a half into a string
    String test = output2.toString();
    //printing the string out for accuracy
    System.out.println(test);
    //converting the string to string hex
    test = toHex(test);
    //converting the string hex to int hex.
    v[x] = Integer.parseInt(test, 16);
}


public static String toHex(String arg) {
    return String.format("%x", new BigInteger(arg.getBytes()));
}

次のエラーが表示されます。

java.lang.NumberFormatException: 入力文字列の場合: "6a54657874"

私はこの問題についてウェブを見回しましたが、文字列を v[x] に変換するときにエラーが発生していると言われています。助けてください。

4

2 に答える 2

2

6a5465787416 進数は45668246949210 進数です。これは より大きいですInteger.MAX_VALUE。に収まりlongます。

を作っvlong[]使うLong.parseLong(test, 16);

于 2013-04-20T20:17:38.747 に答える
1

32 ビットは数値に対して小さすぎます。Long.parseLong代わりに使用する必要があります。

于 2013-04-20T20:21:31.760 に答える