java - 将字符串转换为 Long (java) 和 Google 的 personID

标签 java android google-app-engine

我正在尝试获取登录 Google 用户的 googleID。我能够以 String 对象的形式获取该值,但是我希望能够将其存储为 Long 对象(如长整型)。

但是,当我这样做时,我遇到了错误:

java.lang.NumberFormatException: Invalid long: "123456789012345678901"
            at java.lang.Long.invalidLong(Long.java:124)
            at java.lang.Long.parse(Long.java:364)
            at java.lang.Long.parseLong(Long.java:352)
            at java.lang.Long.parseLong(Long.java:318)
            at java.lang.Long.valueOf(Long.java:476)

我尝试转换的字符串长度为 21 个字符。为什么会抛出这个错误?我该怎么做才能解决这个问题?

我的代码如下

   if (Plus.PeopleApi.getCurrentPerson(m_gacGoogleApiClient) != null) {
       Person perGooglePerson = Plus.PeopleApi.getCurrentPerson(m_gacGoogleApiClient);

       String strGoogleID = perGooglePerson.getId();
       Long lonGoogleID = Long.valueOf(strGoogleID);
   }

最佳答案

最大long值为263 - 1 = 9223372036854775807L。您的 21 位数字太大,无法容纳long。为了避免错误,您可以将其保留为 String 或使用 BigInteger .

关于java - 将字符串转换为 Long (java) 和 Google 的 personID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984440/

相关文章:

java - Android-Libgdx,在游戏开始后点击按钮调用另一个 Activity

google-app-engine - 如何将 App Engine/urlfetch 包与 oauth2 一起使用?

python - 使用 utf-8 编码后仍出现 ascii 代码错误

java - 如何使用jcaptcha库实现声音验证码?

java - java是否缓存方法的结果

PlayStore 控制台中的 Android 崩溃

php - 无法在 App Engine for Laravel 的 php.ini 上启用 PHP 扩展

java - 从公共(public) Internet 访问专用网络上网关后面的计算机上的 REST 端点

java - 使用返回不同类型的 SpelExpressionParser 解析表达式的方法

android - 生成设备特定的序列号