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;. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |