将字符串转换为Long(java)&谷歌的personID

时间:2014-09-22 23:10:07

标签: 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);
   }

1 个答案:

答案 0 :(得分:1)

最大long值为2 63 - 1 = 9223372036854775807L。您的21位数字太大而无法放入long。为避免错误,您可以将其保留为String,也可以使用BigInteger