我进行了以下编码以将十六进制十进制转换为整数。[我的算法]
private static void ConvertFromBase16(string value)
{
value = value.ToUpper();
int result = 0;
int incrementor = 0;
for (int i = value.Length-1; i >= 0; i-- )
{
char c = value[i];
char number;
if (c > 64)
{
number = (char)(c - 55); //Ascii character for A start from 65.in hex
//its 10, so i have subtracted 55 from it.
}
else
{
number = (char)(c - 48); //Ascii character for 0 is 48, so subtracting
//48
}
int n = (int) number;
result += (number* (int) Math.Pow(16 , incrementor));
incrementor++;
}
Console.WriteLine(result);
}
如您所见,在上面的代码中,我使用 ascii 字符进行转换,而不是使用传统的大小写条件。我有点怀疑这是否适用于所有操作系统并产生适当的结果。
请有人建议我这是否是正确的方法并且不会容易出错?
PS:我知道,使用 .net 默认库方法 int.parse 与全球化文化进行转换。我想手动执行此操作以学习数据结构概念。所以请不要从默认的 .net 库中发布任何方便的东西。