我有一个像“131008130225002”这样的int值字符串我需要将其转换为十六进制字符串。我尝试了各种方法,
我需要十六进制格式,使用ABC最多12个位置。
我尝试过Integer.tohex,但它超出了整数范围
我的朋友在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;
}
答案 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
。