服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java中操作超大数的方法

Java中操作超大数的方法

2021-05-09 12:11Java教程网 Java教程

本篇文章是小编在网上整理的关于java操作超大数的方法以及解决思路,有兴趣的朋友参考学习下。

我们知道integer的最大值是 2^31 - 1,long最大值是 2^63 -1

不管是32位机还是64位机都是这样

通常来说我们要操作一个大于 integer最大值的数的时候会用 long来进行

但万一我们遇到一个比 long的最大值还大的数怎么办呢?

biginteger

这种情况还是会出现的,对于操作超大数的情况 java提供了 biginteger类,使用时需要实例化一个 biginteger对象,调用它的运算方法进行加减等操作。

下面举个例子说明

操作 uuid

我们知道在android设备中经常用 anroid_id 来表示设备的唯一性

一般在安装 app的之后第一次启动时会调用下面的代码来生成一个设备编号

?
1
string private_id = settings.secure.getstring(getcontext().getcontentresolver(), settings.secure.android_id);

然后把字符串通过持久化储存放到文件系统或者数据库中,日活等指标都可以依据这个来标识。

它的值通常是个十六进制数,比如

af84c9117b6c98d2

把它转成十进制是

12647454730485537000

这已经超出了long最大值的范围 9223372036854776000

然后我们想在原有 android_id的基础上简单加密一下,比如加个随机数上去什么的

?
1
2
3
4
5
string private_id = settings.secure.getstring(getcontext().getcontentresolver(), settings.secure.android_id);
biginteger androidid = new biginteger(private_id, 16);
random random = new random();
biginteger result = androidid.add(new biginteger(string.valueof(random.nextint(10000)), 10));
string hex = result.tostring();

 

延伸 · 阅读

精彩推荐