Sprache: C#
Berechnet die Wertigkeit der einzelnen Ziffern eines angegebenen Zahlensystems.
Beispiel:
baseSize = 16 (für Hex)
value = 23422
int[] = 5, 11, 7, 14 (Überschnitte wie 11 = B und 14 = E, müssen selbst umgewandelt werden)
public static int[] ToBase(int baseSize, long value)
{
Stack<int> digits = new Stack<int>();
long tmp = value;
while (tmp != 0)
{
digits.Push((int)(tmp % baseSize));
tmp = (long)((tmp - digits.Peek()) / baseSize);
}
return digits.ToArray();
}
public static int[] ToBase(int baseSize, long value)
{
Stack<int> digits = new Stack<int>();
long tmp = value;
while (tmp != 0)
{
digits.Push((int)(tmp % baseSize));
tmp = (long)((tmp - digits.Peek()) / baseSize);
}
return digits.ToArray();
}
Alte URL:
/snippet/dezimalzahl-in-beliebiges-zahlensystem-umrechnen/1084
Dafür gibt es doch die Klasse [b]Convert[/b].
[code]{
int Number = 12345;
byte Base = 2;
string newNumber = Convert.ToString(Number, Base);
}
[/code]
@Klemens Nanni
Ja, aber nur solange die Basis 2, 8, 10 oder 16 ist. Meine Methode kann theoretisch mit jeder Basis arbeiten. Z.B. bei alphanumerischer Kodierung sinnvoll, hier ist die Basis 26. Die Ziffernwerte müssen dann nurnoch auf das Offset vom kleinen oder großen ‚A‘ addiert werden.