1

我有一个 int 值字符串,例如“131008130225002”,我需要将其转换为十六进制字符串。我尝试了各种方法,

  1. toHex 函数的输出是 313331303038313330323235303032 但我不需要它,
  2. 我需要使用 ABC 最多 12 位的十六进制格式。

  3. 我尝试了 Integer.tohex,但它超出了整数范围

  4. 在 Double.tohex 的情况下,它给出 0x1.dc9ad4424da8p46

我的朋友在 ios 中使用unsigned long作为数据类型和0x%02llx正则表达式来转换 nsstring

代码是:

String x="131008130225002"; 
System.out.println(x);
    // System.out.println(Integer.parseInt(x));
     System.out.println(Double.parseDouble(x));
     System.out.println(Double.toHexString(Double.parseDouble(x)));
     String a1= toHex(x);
     System.out.println(a1);

toHex 函数:

static String toHex(String arg) {
    try {
        return String.format("%12x", new BigInteger(1, arg.getBytes("UTF-8")));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}
4

2 回答 2

2
String x = "131008130225002";
System.out.println(new BigInteger(x).toString(16));

输出为 7726b510936a。

于 2013-10-08T07:54:53.600 回答
1

它将适合 a long,因此您可以使用Long.toHexString.

System.out.println(Long.toHexString(Long.parseLong("131008130225002")));

对于更通用的解决方案,BigInteger还具有一个toString接受基数的函数(当然,16 是十六进制)。

System.out.println(new BigInteger("131008130225002").toString(16));

以上两个都打印出来7726b510936a

于 2013-10-08T07:56:39.090 回答