方法1:
int d=10;
d.ToString("x") //或把x改为X,,,就变成了16位的字符串了.
int x=Convert.ToInt32(d.ToString("x"),16);//把16进制的字符串变回10进制的.
方法2:

Code
static void Main()
{
int i = 446;
string hex = i.ToString( "X" /* or x * );
Console.WriteLine( hex );
int j = HexToInt( hex );
Console.WriteLine( j );
}
static int HexToInt(string hex)
{
hex = Regex.Replace(hex, "^0x", "", RegexOptions.IgnoreCase);
if (Regex.IsMatch(hex, "[g-z]", RegexOptions.IgnoreCase))
{
throw new Exception("Invalid Hexadecimal Expression.: 0x" + hex);
}
char[] chars = hex.ToUpper().ToCharArray();
Array.Reverse(chars);
int dec = 0;
for (int i = 0; i < chars.Length; i++)
{
dec += HexMapping(chars[i]) * (int)Math.Pow(16, i);
}
return dec;
}
static int HexMapping(char c)
{
switch (c)
{
case \'0\':
return 0;
case \'1\':
return 1;
case \'2\':
return 2;
case \'3\':
return 3;
case \'4\':
return 4;
case \'5\':
return 5;
case \'6\':
return 6;
case \'7\':
return 7;
case \'8\':
return 8;
case \'9\':
return 9;
case \'A\':
return 10;
case \'B\':
return 11;
case \'C\':
return 12;
case \'D\':
return 13;
case \'E\':
return 14;
case \'F\':
return 15;
default :
throw new Exception("Invalid Hexadecimal Character :" + c.ToString());
}
}