我正在尝试获取登录 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/