加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将字符串转换为整数十六进制值“奇怪”行为

发布时间:2020-12-15 04:53:30 所属栏目:Java 来源:网络整理
导读:我注意到 java不允许我存储大数字等 20亿,即20亿显然是一个整数类型,但如果我存储相应的十六进制值,即int largeHex = 0x77359400;这可以, 所以我的程序需要增加到2 ^ 32,刚刚超过42亿,我测试了十六进制密钥0xffffffff它允许我以这种形式存储为int类型, 我的
我注意到 java不允许我存储大数字等
20亿,即20亿显然是一个整数类型,但如果我存储相应的十六进制值,即int largeHex = 0x77359400;这可以,

所以我的程序需要增加到2 ^ 32,刚刚超过42亿,我测试了十六进制密钥0xffffffff它允许我以这种形式存储为int类型,

我的问题是我必须从程序中提取一个十六进制字符串.

sT = "ffffffff";

int hexSt = Integer.valueOf(sT,16).intValue();

这仅适用于较小的整数值

我收到一个错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffff"

我需要做的就是在整数变量中使用此值,例如

int largeHex = 0xffffffff

哪个工作正常?

我正在使用整数,因为我的程序需要生成许多值.

解决方法

好吧,似乎没有什么可以添加到答案中,但值得澄清一下:

>它会在解析时抛出异常,因为ffffffff对于整数来说太大了.考虑Integer.parseInt(“”L??ong.MAX_VALUE);,而不使用十六进制表示.这里抛出了同样的异常.> int i = 0xffffffff;将i设置为-1.>如果您已经决定使用long而不是整数,请注意long l = 0xffffffff;将l设置为-1,因为0xffffffff被视为int.正确的形式是长l = 0xffffffffL;.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读