我是一个编程新手,所以请保持友好:)
我刚刚编写了一个将十六进制String转换为dec int的程序。我用“负”十六进制进行了测试,有些值是正确的,有些是错误的。我真的无法解决输出错误的问题。
这是我的代码:
String abc = "0123456789ABCDEF";
String hexString = "-ffad";
int decResult = 0;
//int endRes = 0;
hexString = hexString.toUpperCase();
for(int i = 0; i < hexString.length(); i++)
{
if(hexString.contains("-"))
{
hexString = hexString.replace("-", "");
char res = hexString.charAt(i);
int d = abc.indexOf(res);
decResult = (16*decResult + d)*(-1);
}
else
{
char res = hexString.charAt(i);
int d = abc.indexOf(res);
decResult = ((16*decResult) + d)*1;
}
}
System.out.println(decResult);
最佳答案
因为你正在这样做
if(hexString.contains("-"))
对于hexString字符串中的每个char,则转换的最终符号将计算为
如果hexString.length()为奇数,则为负,
否则肯定。
改进的工作解决方案可以是:
hexString = hexString.toUpperCase();
int sign = hexString.charAt(0) == '-' ? -1 : 1;
hexString = hexString.replace("-", "");
decResult = Integer.parseInt(hexString, 16) * sign;
System.out.println(decResult);