Java中操作超大数的方法
我们知道Integer的最大值是2^31-1,Long最大值是2^63-1
不管是32位机还是64位机都是这样
通常来说我们要操作一个大于Integer最大值的数的时候会用Long来进行
但万一我们遇到一个比Long的最大值还大的数怎么办呢?
BigInteger
这种情况还是会出现的,对于操作超大数的情况Java提供了BigInteger类,使用时需要实例化一个BigInteger对象,调用它的运算方法进行加减等操作。
下面举个例子说明
操作UUID
我们知道在Android设备中经常用anroid_id来表示设备的唯一性
一般在安装app的之后第一次启动时会调用下面的代码来生成一个设备编号
Stringprivate_id=Settings.Secure.getString(getContext().getContentResolver(),Settings.Secure.ANDROID_ID);
然后把字符串通过持久化储存放到文件系统或者数据库中,日活等指标都可以依据这个来标识。
它的值通常是个十六进制数,比如
AF84C9117B6C98D2
把它转成十进制是
12647454730485537000
这已经超出了Long最大值的范围9223372036854776000
然后我们想在原有android_id的基础上简单加密一下,比如加个随机数上去什么的
Stringprivate_id=Settings.Secure.getString(getContext().getContentResolver(),Settings.Secure.ANDROID_ID); BigIntegerandroidId=newBigInteger(private_id,16); Randomrandom=newRandom(); BigIntegerresult=androidId.add(newBigInteger(String.valueOf(random.nextInt(10000)),10)); Stringhex=result.toString();