gpt4 book ai didi

java - Java中有符号的十六进制到十进制

转载 作者:行者123 更新时间:2023-11-30 06:53:04 29 4
gpt4 key购买 nike

我想知道是否可以将带符号的十六进制(负)转换为相应的十进制值。

最佳答案

我假设您有一个 String 形式的十六进制值。

方法parseInt(String s, int radix)可以采用十六进制(带符号)字符串,并使用适当的基数 (16) 将其解析为整数。

int decimalInt = parseInt(hexaStr, 16);

上面的解决方案只有在你有像 -FFAA07BB 这样的数字时才有效......如果你想要二进制补码,你必须自己转换它。

String hex = "F0BDC0";

// First convert the Hex-number into a binary number:
String bin = Integer.toString(Integer.parseInt(hex, 16), 2);

// Now create the complement (make 1's to 0's and vice versa)
String binCompl = bin.replace('0', 'X').replace('1', '0').replace('X', '1');

// Now parse it back to an integer, add 1 and make it negative:
int result = (Integer.parseInt(binCompl, 2) + 1) * -1;

或者如果您想要单线:

int result = (Integer.parseInt(Integer.toString(Integer.parseInt("F0BDC0", 16), 2).replace('0', 'X').replace('1', '0').replace('X', '1'), 2) + 1) * -1;

如果数字变得太大(或太小)以至于 Integer 会溢出,请使用 Long.toString(...)Long.parseLong(...) 代替。

关于java - Java中有符号的十六进制到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917946/

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