将字符串转换为十六进制字符串

时间:2013-10-08 07:42:26

标签: java hex

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

  1. toHex功能的输出是313331303038313330323235303032,但我这样做 不需要它,
  2. 我需要十六进制格式,使用ABC最多12个位置。

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

  4. 如果是Double.tohex,则会给出0x1.dc9ad4424da8p46
  5. 我的朋友在ios中使用 unsigned long 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;
    }
    

2 个答案:

答案 0 :(得分:2)

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

输出为7726b510936a。

答案 1 :(得分:1)

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

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

对于更通用的解决方案,BigInteger也有a toString function,它接受​​基数(16当然是十六进制)。

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

以上两个都打印出7726b510936a