将十进制转换为十六进制

时间:2019-02-06 13:58:22

标签: c# algorithm

int DecimalNum=45,temp=0,i=0;
char[] hexcode = new char[10];
while(DecimalNum != 0)
{
    temp = DecimalNum%16;
    if(temp <10)
    {
        hexcode[i]=Convert.ToChar(temp+48);
        i++;
    }
    else if(temp >=10)
    {
        hexcode[i]=Convert.ToChar(temp+55);
        i++;
    }
    DecimalNum=DecimalNum/16;

}

O / P:2D

有人可以解释一下为什么在转换为Char之前为什么要分别添加48和55吗?

2 个答案:

答案 0 :(得分:2)

ASCII表中的0表示为48。 ASCII表中A的表示形式为65,六进制的A值为10(65-10 = 55)

答案 1 :(得分:1)

这些是字符0A的ASCII码。

如果不这样做,ToChar会将值转换为分别存储在索引0和索引10的ASCII符号。

公平地说,我发现这是一种非常粗略的方法。我希望有一个字符串"01234567890ABCDEF",并在该字符串中使用索引。这样,您就不必受限于系统的基础字符表示形式了。