16進数を整数に変換するために、次のコーディングを行いました。【私のアルゴリズム】
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 文字を使用しています。これがすべての OS で機能し、適切な結果が得られるかどうかは、かなり疑問です。
これが正しいアプローチであり、エラーが発生しにくいかどうかを教えてください。
PS: .net の既定のライブラリ メソッド int.parse をグローバリゼーション カルチャと共に使用して変換していることはわかっています。データ構造の概念を学ぶために、これを手動で行いたいと考えています。したがって、デフォルトの .net ライブラリから便利なものを投稿しないでください。