当前位置: 首页 > 面试题库 >

Java中的十六进制到整数格式格式异常

殳睿
2023-03-14
问题内容

尝试执行数字格式异常时,出现异常

int temp = Integer.parseInt("C050005C",16);

如果我减少十六进制数字中的一位,它将转换但不会转换。为什么以及如何解决这个问题?


问题答案:

这将导致整数溢出,因为整数始终在Java中签名。从该方法的文档中(重点是我的):

NumberFormatException如果发生以下任何一种情况,将引发type 异常:

  • 第一个参数为null或长度为零的字符串。
  • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX。
  • 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号’-‘(’\ u002D’),前提是该字符串长于长度1。
  • 字符串表示的值不是int类型的值。

不过, 它将 适合 符号整数。从Java
8开始,有Integer.parseUnsignedInt:

int temp = Integer.parseIntUnsigned("C050005C",16);

在早期的Java版本上,最好的选择是使用a long,然后将其低4字节long放入a int

long x = Long.parseLong("C050005C", 16);
int y = (int) (x & 0xffffffff);

也许您甚至可以在此处删除按位“和”,但是我现在无法测试。但这可能会缩短为

int y = (int) Long.parseLong("C050005C", 16);


 类似资料:
  • 问题内容: 我需要从随机整数(0-255)列表中创建一个十六进制数字字符串。每个十六进制数字应由两个字符表示:5-“ 05”,16-“ 10”等。 例: 我设法提出了: 但是,这看起来有点尴尬。有没有更简单的方法? 问题答案:

  • 问题内容: 我正在尝试将String十六进制转换为整数。从哈希函数(sha-1)计算出十六进制字符串。我收到此错误:java.lang.NumberFormatException。我猜它不喜欢十六进制的String表示形式。我该如何实现。这是我的代码: 例如,当我传递以下字符串: _DTOWsHJbEeC6VuzWPawcLA时 ,他的哈希值是: 0xC934E5D372B2AB6D0A50B9F

  • 问题内容: 我在格式化双精度小数时遇到一些问题。如果我有一个双精度值,例如4.0,我该如何格式化小数位使其改为4.00? 问题答案: 一种方法是使用NumberFormat。

  • 我在格式化双精度小数时遇到了一些问题。如果我有一个双精度值,例如4.0,我如何设置小数的格式,使其变为4.00?

  • 是否可以使用一种方法或其他方法,而不是“%.6f”。格式(值)以实现相同的目标?这是我的代码: 我想让它更具动态性和可读性

  • 问题内容: 在以下代码中,我需要打印in 。 第一个 Print语句以格式显示值。 在 第二个 语句显示值在 其中 但是,我正在手动将值输入到第二个打印语句中。 有什么方法可以将我从第一个语句(颜色)获得的值传递到第二个打印语句并获得结果? 问题答案: 方法1:使用StringTokenizer: 方式2: