从十进制到十六进制的数字基数转换

本文关键字:转换 数字 十进制 十六进制 | 更新日期: 2023-09-27 18:11:17

在下面的代码中,有人能让我明白代码是如何以字母形式打印输出的吗?代码的哪一部分将数字转换为字母?如果我输入999,它会把它转换成3E7。

class program
 {
   public static void Main()
   {
    int decimalNumber, quotient;
    int i = 1, j, temp = 0;
    char[] hexadecimalNumber = new char[100];
    char temp1;
    Console.WriteLine("Enter a Decimal Number :");
    decimalNumber = int.Parse(Console.ReadLine());
    quotient = decimalNumber;
    while (quotient != 0)
    {
        temp = quotient % 16;
        if (temp < 10)
            temp = temp + 48;
        else
            temp = temp + 55;
        temp1 = Convert.ToChar(temp);
        hexadecimalNumber[i++] = temp1;
        quotient = quotient / 16;
    }
    Console.Write("Equivalent HexaDecimal Number is ");
    for (j = i - 1; j > 0; j--)
        Console.Write(hexadecimalNumber[j]);
    Console.Read();
  }
}

从十进制到十六进制的数字基数转换

这里计算字符值:

if (temp < 10)
    temp = temp + 48;
else
    temp = temp + 55;

48是数字"0"的ASCII码,55是数字"A"的ASCII码。

48 + 0 == '0'
48 + 1 == '1'
...
48 + 9 == '9'
55 + 10 + 0 == 'A'
55 + 10 + 1 == 'B'
...