【问题标题】:Why can't this 4-byte hex number be converted into an int? [duplicate]为什么这个 4 字节的十六进制数不能转换成 int? [复制]
【发布时间】:2021-01-02 20:11:25
【问题描述】:

我希望创建一个 java 方法,该方法采用 4 字节有符号十六进制数并将其转换为 int。 但是,当我测试诸如“aaaaaaaa”或“ffffffff”之类的输入时

Integer.valueOf("aaaaaaaa", 16)
Integer.valueOf("ffffffff", 16)

应该分别给出值:-1431655766 和 -1。

但是,我遇到了以下异常

Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffff"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.valueOf(Integer.java:740)
    at ByteTest.main(ByteTest.java:8)

我能做些什么来解决这个问题?

【问题讨论】:

  • 从 Java 8+ 开始,使用 parseUnsignedInt(),这两个输入的结果将是 -1431655766-1

标签: java type-conversion hex value-of


【解决方案1】:

来自 JavaDoc...

当使用第二个参数给出的基数进行解析时,返回一个 Integer 对象,该对象包含从指定 String 中提取的值。第一个参数被解释为表示第二个参数指定的基数中的有符号整数,就像将参数提供给 parseInt(String, int) 方法一样。

整数不能保存与八位十六进制值等效的正数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2021-10-19
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多