【问题标题】:Hexadecimal Conversion in Java ErrorJava 中的十六进制转换错误
【发布时间】:2013-04-14 00:48:41
【问题描述】:

我正在尝试将用户的输入作为字符串接收,将此字符串分成两半并将这些字符串转换为十六进制整数。我需要在 TEA 加密算法中使用这些十六进制整数。我正在 netbeans 中为 gui builder 制作这段代码。

我当前的代码

//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] 时会发生这种情况,多个站点说这是将十六进制字符串放入 int 的正确方法,所以我很困惑。请帮忙。

【问题讨论】:

    标签: java parsing hex


    【解决方案1】:

    6a54657874 十六进制是 456682469492 十进制。这比Integer.MAX_VALUE 大。它将适合long

    v 设为long[] 并使用Long.parseLong(test, 16);

    【讨论】:

      【解决方案2】:

      32 位对于您的数字来说太小了。您需要改用Long.parseLong

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2012-11-08
        • 2017-10-06
        相关资源
        最近更新 更多