【问题标题】:Converting Signed Int to Unsigned String value in Java在 Java 中将 Signed Int 转换为 Unsigned String 值
【发布时间】:2012-05-24 10:12:51
【问题描述】:

为了简短起见,我得到了一个有符号数 -25771(在 Java 中),我需要它的无符号字符串表示形式,即“4294941525”。 Java 认为数字是有符号的二进制补码,但我需要它的无符号值。

我注意到 Integers 的 toString() 方法的 Javadoc 只转换为有符号表示。

难道没有“& 0xFF”之类的按位运算可以得到无符号数吗?

【问题讨论】:

    标签: java binary unsigned signed representation


    【解决方案1】:

    在 Java 8 中,您可以只使用 Integer.toUnsignedString(int i)

    【讨论】:

      【解决方案2】:

      您可以使用 Guava 的 UnsignedInts.toStringparseUnsignedInt 来反转这个过程。

      【讨论】:

        【解决方案3】:

        我会试试的

        int val = -25771;
        System.out.println(Long.toString(val & 0xFFFFFFFFL));
        

        打印

        4294941525
        

        "" + (val & 0xFFFFFFFFL)
        

        【讨论】:

        • 这些都给我 0 作为输出,但是 aix 之前发布的解决方案得到了一个接近的值(数字的前半部分是正确的)。
        • 你能举个例子吗?你应该只得到 0,对于 0。
        • 我发现了问题:我使用 currentDirectory.getInt(0x011A) 方法来读取 TIFF 元数据标签,只要我将 int 保存到实际的 int 变量中,您的解决方案现在就可以工作。谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 2014-08-03
        • 2020-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多