我做了如下編碼,將十六進制小數轉換爲整數。 [我的算法]HtoI [HexaDecimal to Integer] - 使用ASCII碼
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庫中發佈任何東西。
不錯。而在if情況下使用(c> ='A') – sukunrt
ASCII代碼是通用的。 http://en.wikipedia.org/wiki/ASCII它不會改變我相信。感謝wutz提供的建議,以及它如何完成c或C++。確保我是否在正確的道路上。 :) – VIRA