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

C# 从十进制到十六进制的数字基转换,c#,C#,在下面的代码中,有人能让我理解代码是如何以字母打印输出的。代码的哪一部分将数字转换为字母?如果我输入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.W

在下面的代码中,有人能让我理解代码是如何以字母打印输出的。代码的哪一部分将数字转换为字母?如果我输入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();

  }
}
类程序
{
公共静态void Main()
{
整数小数,商;
内部温度i=1,j,温度=0;
字符[]十六进制数=新字符[100];
字符temp1;
Console.WriteLine(“输入十进制数:”);
decimalNumber=int.Parse(Console.ReadLine());
商=小数;
while(商!=0)
{
温度=商%16;
如果(温度<10)
温度=温度+48;
其他的
温度=温度+55;
temp1=转换为碳(temp);
十六进制数[i++]=temp1;
商=商/16;
}
Console.Write(“等效十六进制数为”);
对于(j=i-1;j>0;j--)
Console.Write(十六进制数[j]);
Console.Read();
}
}

此处计算字符值:

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

我对此一无所知。非常感谢你。我使用switch语句将其从数字转换为字母。我发现使用
temp=temp+'A'更具可读性而不是数值”。@Ralvarez请参阅。请注意,“A”是65,而不是55。代码中使用55,因为字母+1有“额外10”。如果上一个除法运算(模运算符)的剩余部分为
0
9
,则代码将生成对应于等效可打印字符
'0'
'9'
的十进制值。否则,除法的其余部分在范围
10
15
内,相应的可打印字符将是
'A'
'F'
(这些字符的十进制值是
65
70
。是
Convert.ToChar
计算十进制值并返回一个可打印的字符,该字符附加到字符数组中。@Herman使用“a”更具可读性,但我想应该是
temp=temp-10+'a'
p+'A'
。看起来在调试器上花费的时间应该会提供一些线索。
48 + 0 == '0'
48 + 1 == '1'
...
48 + 9 == '9'

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