Zahlen: base X nach base 10 konvertieren
-
Hallo Leute.
Gibt es im .NET Framework (2.0 kompatibel bitte) eine Moeglichkeit Zahlen mit der Basis X (meistens 2 oder 16 - aber ab und zu kommen auch ausgefallener Sachen wie base 8 daher) nach base 10 also in einen Int32 zu konvertieren?
Aktuell gehe ich den haendischen weg:
public static class BaseConvert { private static char[] digits = new char[] { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t', 'u','v','w','x','y','z' }; private static int getDigitValue(char digit) { int value=0; foreach(char c in digits) { if(c == digit) return value; ++value; } throw new Exception("Unknown digit '"+digit+"'"); } public static long Convert(string num, int radix) { if(radix > 36 || radix < 1) throw new ArgumentException("radix ("+radix.ToString()+") not in range 1..36"); long result = 0; long mul = 1; char[] numDigits = num.ToLower().ToCharArray(); Array.Reverse(numDigits); foreach(char c in numDigits) { long val = getDigitValue(c) * mul; result += val; mul *= radix; } return result; } }
Aber uU gibt es im Framework ja einen kuerzeren Weg?
Danke schonmal
-
Ja, wenn ich mich recht erinnere, sieht der Aufruf so aus:
System.Convert.ToInt32(var, 16);
Hier muss man aber eben wissen, dass die Quelle 16 und das Ziel 10 ist.
-
danke, genau das habe ich gesucht.
Bei meinen Suchen in der Doku bin ich immer nur bei IFormatProvider gelandet.
-
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
http://gshpa.org/support/_vti_cnf/sup_faq/gifts/cari/
-
endline schrieb:
Ja, wenn ich mich recht erinnere, sieht der Aufruf so aus:
System.Convert.ToInt32(var, 16);
Hier muss man aber eben wissen, dass die Quelle 16 und das Ziel 10 ist.
Das Ziel is eigentlich 2...