Laden...

Umwandlung Dezimal -> Binär funktioniert nicht

Erstellt von Zajaer vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.632 Views
Z
Zajaer Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren
Umwandlung Dezimal -> Binär funktioniert nicht

Also laut der Entwicklungsumgebung sind im Quelltext keine Fehler enthalten. Das kann leider nicht stimmen, denn statt die Umrechnung auszuführen gibt er mir im Ergebnisfeld exakt die gleiche Zahl an wie im Eingabefeld für den User.
Entweder ist die Rechnung in der Funktion falsch oder der Wert wird nicht zurückgeliefert würde ich jetzt denken, leider habe ich dafür keine Lösung gefunden.


        private void button7_Click(object sender, EventArgs e)
        {
            Int32 num1;

            int.TryParse(textBox1.Text, out num1);
            if (int.TryParse(textBox1.Text, out num1))
            {
                num1 = Int32.Parse(textBox1.Text);
                binary(num1);
                textBox3.Text = num1.ToString();
            }
        }
            
        public static string binary(Int32 num1)
        {
             return Convert.ToString(num1,2);
        }
    }
}

C
2.121 Beiträge seit 2010
vor 13 Jahren

Also laut der Entwicklungsumgebung sind im Quelltext keine Fehler enthalten

Die findet nur Syntaxfehler. Wenn du logische Fehler machst, d.h. das Programm macht zwar das was du ihm sagst aber du hast ihm was falsches gesagt, sowas findet die Entwicklungsumgebung natürlich nicht.

Deine Funktion gibt etwas zurück, aber du wertest das nicht aus. Die Zahl die du da ausgibst ist nach wie vor die selbe wie vorher.

V
78 Beiträge seit 2008
vor 13 Jahren

Hallo Zajaer

1.

int.TryParse(textBox1.Text, out num1);
if (int.TryParse(textBox1.Text, out num1))
{ ... }

Hier rufst du die Methode zweimal auf, einmal innerhalb der If-Bedingung reicht aus.

  1. Zu deinem eigentlichen Problem
binary(num1);

Wie du schon richtig gemacht hast gibst du in deiner Methode den veränderten String zurück. Allerdings machst du nichts mit dem Rückgabe Wert.
Also z.B.

string s = binary(num1);

Zahlen haben keine dezimale, hexadezimale, binäre Darstellung. Im physikalischen Speicher sind am Ende alles "nullen und einsen". Deswegen kannst du aus einem int auch keinen "binär int" machen. Nur Anzeigen kannst du diese Zahlen in verschiedenen Formaten(binär, dezimal, ...).

Warum man Strings nicht direkt ändern kann: [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)

Z
Zajaer Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren

Es funktioniert.

Ich danke euch beiden für die schnelle Hilfe 😃

mit freundlichen Grüßen,

Zajaer

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Zajaer,

dein Code lässt sich leicht zu

        private void button7_Click(object sender, EventArgs e)
        {
            Int32 num1;

            if (int.TryParse(textBox1.Text, out num1))
            {
                textBox3.Text = Convert.ToString(num1,2);
            }
        }

zusammenschnurren.

Davon unabhängig beachte bitte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore