Feedback

Dezimalzahl in beliebiges Zahlensystem umrechnen

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();
}

2 Kommentare

  1. Dafür gibt es doch die Klasse [b]Convert[/b].
    [code]{
    int Number = 12345;
    byte Base = 2;

    string newNumber = Convert.ToString(Number, Base);
    }
    [/code]

  2. @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.