首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin NumberFormatException

Kotlin NumberFormatException
EN

Stack Overflow用户
提问于 2017-11-23 10:14:17
回答 2查看 963关注 0票数 0

为什么"b23c77126dd924bf".toLong(16)生产java.lang.NumberFormatException ??

官方文件中,Long“表示64位有符号的整数”。

0xb23c77126dd924bf适合64位,它是十进制-5603472915319675713

EN

回答 2

Stack Overflow用户

发布于 2017-11-24 00:33:22

这里的问题是,如果您没有在Kotlin文字之前显式地加上-符号,那么文字总是被假定代表一个正数。因此,在这里,0xB23C77126DD924BF不是按照它的两个补码表示来解释的,如果假设它是一个64个有符号的整数,它就会给出-5603472915319675713。它被解释为12843271158389875903,这超出了长支持范围。

这是与价值相同的问题,但在这里,它与Long而不是Int有关。

票数 1
EN

Stack Overflow用户

发布于 2017-11-23 10:30:07

它的工作.Use BigInteger

代码语言:javascript
复制
        val numb = "b23c77126dd924bf"
        val res = BigInteger(numb, 16)
        println(res)     //12843271158389875903
        println(res.toLong()) //-5603472915319675713
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47452924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档