0 "7FFF" =-6ren">
gpt4 book ai didi

java - 2 的十六进制数补码在 Java 中转为十进制

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:47 25 4
gpt4 key购买 nike

我有一个表示 2 的补码的十六进制字符串。有没有一种简单的方法(库/函数)可以将十六进制转换为十进制而不直接使用它的位?

例如这是给定左侧十六进制的预期输出:

"0000" => 0
"7FFF" => 32767 (max positive number)
"8000" => -32768 (max negative number)
"FFFF" => -1

谢谢!

最佳答案

这似乎是在不强制返回正结果的情况下欺骗 java 转换数字:

Integer.valueOf("FFFF",16).shortValue(); // evaluates to -1 (short)

当然这种事情只适用于 8、16、32 和 64 位 2 的补码:

Short.valueOf("FF",16).byteValue(); // -1 (byte)
Integer.valueOf("FFFF",16).shortValue(); // -1 (short)
Long.valueOf("FFFFFFFF",16).intValue(); // -1 (int)
new BigInteger("FFFFFFFFFFFFFFFF",16).longValue(); // -1 (long)

Example here .

关于java - 2 的十六进制数补码在 Java 中转为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6699275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com