java - Java中的十六进制转换错误

标签 java parsing hex

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

我当前的代码

//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: For input string: "6a54657874"

我在网上查找了这个问题,但错误表明当我将字符串转换为 v[x] 时会发生这种情况,多个网站都说这是将十六进制字符串放入 int 的正确方法,所以我很困惑。请帮忙。

最佳答案

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

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

关于java - Java中的十六进制转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124728/

相关文章:

java - Grails + Java : Attempting to perform implementation of MessagePostProcessor

java - 在 Java 中获取 InputStream 的大小

python - 正则表达式用于解析带引号的子字符串的查询并返回单个单词的嵌套列表

C — 十六进制字符串到文字十六进制值

vb.net - 使用 VB.NET 发送包括十六进制的 UDP 数据

java - Selenium - 以编程方式将 html 转换为 junit

java - c# 使用windows窗体调用jar文件

python - 在 BeautifulSoup 中用另一种标签替换一种标签

ruby-on-rails - 使用多种可接受的格式验证 Ruby 中的日期字符串?

linux - printf 在尝试定位十六进制内存位置时给出问号