繁体   English   中英

用Java将十六进制符号签名为十进制

[英]Signed Hexadecimal to decimal in Java

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

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

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

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;

如果数字太大(或太小),则整数将溢出,请改用Long.toString(...)Long.parseLong(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM