我有一个十六进制字符串240300000800000000000000004。我想在这个十六进制代码中添加整数,并返回java中的十六进制代码。
由于java不支持这种垃圾长度的值,那么我们该怎么做呢?
谢谢Abhishek
String str = "240300000800000000000000004";
BigInteger bi = new BigInteger(str, 16);
Integer ii = 10; // Integer to add
bi = bi.add(new BigInteger(ii.toString()));
System.out.println(bi.toString(16)); // 24030000080000000000000000e
在Java 中使用BigInteger
这将满足您的要求。
访问以下教程以学习Java中的BigInteger:TutorialPoint
最简单的解决方案是已经发布的使用BigInteger的解决方案。然而,您也可以按块处理加法,这样结果和任何进位都将适合长。从右端开始,进位为零。取一组最多15个十六进制数字,转换为长,进行加法,包括从该块右侧加法的任何进位,将结果的15个最低有效数字存储到输出字符串中,并记住该加法的最高有效数字作为进位,即向左下一个加法的进位。
BigInteger b = new BigInteger("FF", 16);
BigInteger bPlus1 = b.plus(1);
String hex = bPlus1.toString(16); // 0x100
BigInteger bigint = new BigInteger("240300000800000000000000004" ,16);
System.out.println(bigint);
BigInteger s = new BigInteger("8");
bigint = bigint.add(s);
System.out.println(bigint);