前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中如何操作超大数

Java中如何操作超大数

作者头像
PhoenixZheng
发布2018-08-07 16:15:36
4210
发布2018-08-07 16:15:36
举报
文章被收录于专栏:Phoenix的Android之旅

我们知道Integer的最大值是 2^31 - 1,Long最大值是 2^63 -1, 不管是32位机还是64位机都是这样, 通常来说我们要操作一个大于 Integer最大值的数的时候会用 Long来进行, 但万一我们遇到一个比 Long的最大值还大的数怎么办呢?

BigInteger

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

操作 UUID

我们知道在Android设备中经常用 anroid_id 来表示设备的唯一性, 一般在安装 app的之后第一次启动时会调用下面的代码来生成一个设备编号,

代码语言:javascript
复制
String private_id = Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID);

然后把字符串通过持久化储存放到文件系统或者数据库中,日活等指标都可以依据这个来标识。 它的值通常是个十六进制数,比如

AF84C9117B6C98D2

把它转成十进制是

12647454730485537000

这已经超出了Long最大值的范围 9223372036854776000, 然后我们想在原有 android_id的基础上简单加密一下,比如加个随机数上去什么的,

代码语言:javascript
复制
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();
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android每日一讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BigInteger
  • 操作 UUID
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档