Binär zu Dezimal



  • Hallo zusammen,
    habe ein Problem mit einem meiner Programme.
    Bin dabei mit dem Borland C++ Builder 5 ein Programm zu schreiben, das 6-stellige Binärzahlen in eine Dezimalzahl umwandelt.
    Dazu verwendet habe ich bislang ein Edit (zur Eingabe der Binärzahl), ein Label (zur Ausgabe der Dezimalzahl) und einen Button (der den Auftrag zum Umrechnen gibt). Ich selbst kann auch eine Binärzahl in eine Dezimalzahl umrechnen, jedoch muss ich das meinem Programm beibringen, was ich aber nicht wirklich hinbekomme.
    Über Vorschläge und Anregungen wie man an ein solches Problem rangehen könnte würde ich mich sehr freuen.
    Ich erwarte keinen direkten Lösungsvorschlag sondern ledigliche eine kleine Hilfestellung, würde nämlich gern selbst auf die Lösung kommen.

    MfG
    MWJK



  • MWJK schrieb:

    Ich selbst kann auch eine Binärzahl in eine Dezimalzahl umrechnen

    Einfach die mathematischen Vorgänge, die du sonst im Kopf ausführst, in Code ausformulieren.

    Beispiel Kreisfläche:
    A = (M_PI / 4) * (d * d);



  • Jansen schrieb:

    Einfach die mathematischen Vorgänge, die du sonst im Kopf ausführst, in Code ausformulieren.

    Beispiel Kreisfläche:
    A = (M_PI / 4) * (d * d);

    Genau da war bei mir leider das Problem.
    ich schaue mir die Zahl an - Bsp.: 101010 - sehe, erstes is ne 1 - also (in dem fall hier) 1 * 32, zweites is ne 0 - also 0 * 16, drittes 1 - 1 * 8, u.s.w. - viertes 0, fünftes 1 * 2, sechstes 0 ...
    also 32 + 8 + 2 = 42 ...
    da ich es allerdings in nem edit hab, wie frage ich dann die einzelnen stellen ab?



  • Dazu gibt es den Indexoperator.

    d.h

    AnsiString Text = Edit1->Text;//Text speichern
    

    Nun kannst du so auf die einzelnen Zeichen zugreifen

    Text[1] //erste Stelle
    Text[2]//2.Stelle
    usw



  • Cool, hoffe so klappt es wie ich mir das vorstelle.
    Danke an euch beide, habt mir echt sehr geholfen wenns klappt^^

    MfG
    MWJK



  • Aksel schrieb:

    Dazu gibt es den Indexoperator.

    d.h

    AnsiString Text = Edit1->Text;//Text speichern
    

    Nun kannst du so auf die einzelnen Zeichen zugreifen

    Text[1] //erste Stelle
    Text[2]//2.Stelle
    usw

    das funktioniert leider nicht ganz so wie es sollte ...
    habe als binärzahl mal die 010000 genommen. dann gesagt

    ausgabe = Text[2]*16;
    

    und raus kam 784 ...
    irgendwie weiß ich nich mehr weiter ...



  • Nimm mal an, im Edit stünde nicht 110101 sondern abcde. Fällt dir auf, dass es so einfach, wie du es dir machen wolltest, nicht sein kann?
    Informiere dich erstmal, was es mit dem Operator [] beim AnsiString auf sich hat.



  • Caste mal deine Buchstaben in Zahlen, denn wird alles gut.

    StrToInt oder so? Sonst nimmst dir ne Ascii Tabelle und schreibst die selbst ne Funktion.



  • Achso - alles klar, hab mal nen StrToInt genommen und nun funktioniert auch alles ... war also mein Fehler nicht eurer - Danke nochmal an alle hier für die schnellen Antworten und die gute und kompetente Hilfe.

    MfG
    MWJK


Anmelden zum Antworten