[英]Converting between negative Hexadecimal and negative Decimal gives wrong results
我正在尝试手动在十进制和十六进制之间转换数字。 我有它为正数工作并将负的十进制转换为“负”十六进制,但我不能将其从“负”的十六进制转换为负的十进制。
这是我尝试使用的代码:
private string HexToDecimal(char[] toConvert)
{
if (negativeValue)
{
negativeValue = false;
long var = Convert.ToInt64(HexToDecimal(ResultLabel.Text.ToCharArray()));
long valueToHex = var - (long)Math.Pow(16, 15);
return ResultLabel.Text = valueToHex.ToString();
}
else
{
double total = 0;
//Convert hex to decimal
HexOrDecimalLabel.Text = "Decimal";
//TODO: create int array from indivial int
char[] charArray = toConvert;
long[] numberArray = HexSwitchFunction(charArray);
//TODO: reverse array
Array.Reverse(numberArray);
//loop array, times value by 16^i++, adding to total. This is the method used to convert hex to decimal
double power = 0;
foreach (int i in numberArray)
{
total += (i * (Math.Pow(16, power)));
power++;
}
//set the result label to total
isHex = false;
AllowHexButtons();
return ResultLabel.Text = total.ToString();
}
}
例如,我可以将-10转换为FFFFFFFFFFFFFFF6,但是当我尝试将其转换为十进制时,得到1.15292150460685E + 18,我不能用它做任何方程式。
有谁知道解决这个问题的方法吗?
这是因为double
对负数使用了不同的表示形式。 将total
和power
的类型从double
更改为long
将解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.