C#16进制转换成10进制的问题

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();
    }