我尝试使用以下字符串生成并将其转换为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()的工作原理吗?还有另一种方法来实现这一目标吗?
答案 0 :(得分:1)
如评论中所述,此处的问题是输入数据。
确保要转换为Long的数字小于
Long.MAX_VALUE
(9223372036854775807),因为使用36基数可以轻松生成非常大的数字。这是您使用字母z获得的最大长度:Long.parseLong('zzzzzzzzzzzz', 36)
选项是使用BigInteger
:
groovy:000> new BigInteger('z'*42, 36)
===> 231582123678838102672736490567111386503858361810075859110326173695