我目前的任务是编写一个到不同系统的转换器。转换成二进制没有问题,但我在使用十六进制时遇到了一些问题。下面是我的代码:
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
。
我做错什么了?
发布于 2016-08-22 14:48:42
而不是这样:
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'
。
https://stackoverflow.com/questions/39082074
复制相似问题