C# int a = 0x00002EE5;
int b = 5 + 15 * 16 + 15 * 16 * 16 + 2 * 16 * 16 * 16;
int c = Convert.ToInt32(a);
运行结果
b = 12777
c = 12005
这是哪出现了问题?
E是14,F是15,16进制0到F对应的值是0到15,你重新计算一下
5 + 14 * 16 + 14 * 16 * 16 + 2 * 16 * 16 * 16 = 12005;
希望能帮到你。
2EE5转成10进制就是12005,你有什么问题
E对应10进制是14,不是15
E代表的是14而不是15.
二楼说得对,你写的b明显是2FF5
E对应的10进制数是14
public static String HexToInt32(string HexStr)
{
int sup = 0;
string sin = "";
int sum = 0;
for (int i = 0; i < HexStr.Length; i++)
{
int sq = HexStr.Length - i-1;
sin = HexStr.Substring(i, 1);
#region
switch (sin)
{
case "A":
sup =10;
break;
case "B":
sup = 11;
break;
case "C":
sup = 12;
break;
case "D":
sup = 13;
break;
case "E":
sup = 14;
break;
case "F":
sup = 15;
break;
default:
sup = Convert.ToInt32(sin);
break;
}
#endregion
int zam = Convert.ToInt32(Math.Pow(16, Convert.ToDouble(sq)))*sup;
sum += zam;
}
return sum.ToString();
}