从十六进制字符串中检索长度可变的数字

时间:2018-07-13 23:21:50

标签: java hex

我下面有一个十六进制字符串格式:

2828287798519497FFFF9000 => 2828287798519497 (result)
1122334466667788996FFFF9000 => 1122334466667788996 (result)

id的长度在16到19之间,其中最右边是0xF。

什么是0xF?

如何从上面的十六进制字符串中获取长度为16、17、18或19的ID号?

2 个答案:

答案 0 :(得分:2)

BigInteger用于任意精度的整数数学,并且它的构造函数采用Stringint基数。 0xF是以16为底的第16个值(数字通常是以10为底的的0到9,以及值A,B,C,D,E和F)。

System.out.println(new BigInteger("2828287798519497FFFF9000", 16));
System.out.println(new BigInteger("1122334466667788996FFFF9000", 16));

您的两个值的以10为底的表示形式是

12427948526435964620659200000
21719411700849473095611778568192

答案 1 :(得分:0)

根据您提供的示例,所需的ID号由给定十六进制字符串的最后8个字符(在两个示例中均为FFFF9000)组成。换句话说,子字符串从字符串的开头开始,一直延伸到但不包括最后八位字符:

String h = "2828287798519497FFFF9000";
String id = h.substring(0, h.length()-8);
System.out.println(h + " => " + id);