使用parseLong将字母数字字符串转换为long

时间:2015-08-10 22:49:35

标签: groovy

我尝试使用以下字符串生成并将其转换为long:

 Long id1L = Long.parseLong(makeID(tumor_type, featureType1, name1), 36)
 Long id2L = Long.parseLong(makeID(tumor_type, featureType2, name2), 36)
 long id1 = id1L.longValue()
 long id2 = id2L.longValue()

其中makeID返回小写的字母数字字符串。我认为传递36作为基数会转换字母,但是当我尝试将id1或id2传递给需要长值的函数时,我得到一个输出原始字符串的NumerFormatException。我误解了parseLong()的工作原理吗?还有另一种方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

如评论中所述,此处的问题是输入数据。

  

确保要转换为Long的数字小于Long.MAX_VALUE(9223372036854775807),因为使用36基数可以轻松生成非常大的数字。这是您使用字母z获得的最大长度:Long.parseLong('zzzzzzzzzzzz', 36)

选项是使用BigInteger

groovy:000> new BigInteger('z'*42, 36)
===> 231582123678838102672736490567111386503858361810075859110326173695