编写基本转换工具并遇到十六进制问题

时间:2016-08-22 14:25:28

标签: c# hex

我目前的任务是将转换器写入不同的系统。 转换为二进制文件没有问题,但我遇到了十六进制的麻烦。这是我的代码:

    public string[] ConvertInput(int pInput, int pBase)
    {
        List<string> Output = new List<string>();
        int Tmp = pInput;
        int TmpBin;

        for (int i = 0; Tmp > 0; i++)
        {
            TmpBin = Tmp % pBase;
            Tmp = Tmp / pBase;
            if (TmpBin >= 10)
            {
                char c = (char)TmpBin;
                Output.Add(c.ToString());
            }
            else
            {
                Output.Add(TmpBin.ToString()); 
            }
        }

        string[] OutArray = Output.ToArray();

        Array.Reverse(OutArray);

        return OutArray;
    }

因此,如果我尝试将数字15555转换为十六进制,则应该返回3cc3,但它的作用是返回3\f\f3

我做错了什么?

1 个答案:

答案 0 :(得分:2)

而不是:

if (TmpBin >= 10)
{
    char c = (char)TmpBin;
    Output.Add(c.ToString());
}

这样做:

if (TmpBin >= 10)
{
    char c = (char)('A' + (TmpBin - 10));
    Output.Add(c.ToString());
}

在您的版本中,您将十进制值10,11,12等直接转换为字符,并且(例如)代码为10的字符是换行符,而不是'A'