Brauche kurze C# Hilfe!

06/10/2014 19:32 nilspan#1
Hey,

ich versuche mich an einem Binärcode umrechner.

Heißt man gibt einen Binärcode ein, er wandelt ihn um und gibt die Dezimalzahl aus.

Aber ich kann nur einen 4 stelligen Code eingeben.. Wie bekomme ich es mit einer Scheife (if, for) hin, diesen beliebig lang zu machen?

Code:
 int iStelle1;
            int iStelle2;
            int iStelle3;
            int iStelle4;


            Console.WriteLine("Geben Sie die Binäerzahl ein");
            int iBinerzahl = Convert.ToInt32(Console.ReadLine());

            iStelle1 = (iBinerzahl % 2);
            iBinerzahl = (iBinerzahl / 10);

            iStelle2 = (iBinerzahl % 2);
            iBinerzahl = (iBinerzahl / 10);

            iStelle3 = (iBinerzahl % 2);
            iBinerzahl = (iBinerzahl / 10);

            iStelle4 = (iBinerzahl % 2);
            iBinerzahl = (iBinerzahl / 10);

            iStelle1 = iStelle1 * 1;
            iStelle2 = iStelle2 * 2;
            iStelle3 = iStelle3 * 4;
            iStelle4 = iStelle4 * 8;

            int Ausgabe = iStelle1 + iStelle2 + iStelle3 + iStelle4;

            Console.WriteLine("Die Dezimalzahl beträgt " + Ausgabe);
            Console.ReadKey();
06/10/2014 21:20 マルセル#2
Habe einfach mal deine Variablen ungefähr übernommen, wobei deutsche Variablen immer doof sind.. :|

Code:
Console.WriteLine("Geben Sie die Binäerzahl ein");
string BinaerZahl = Console.ReadLine();
int DezimalZahl = 0;

// String mit Regex überprüfen, ob er denn auch wirklich eine Binäerzahl ist
if (!Regex.IsMatch(BinaerZahl, "[01]{1,}"))
	Console.WriteLine("DAS IST KEINE BINÄRE ZAHL");
else
	for (int i = 0; i < BinaerZahl.Length; i++)
		// Wenn das aktuelle Zeichen eine 1 ist
		if (BinaerZahl[1] == '1')
			// 2^aktuelle position
			DezimalZahl += (int)Math.Pow(2, BinaerZahl.Length - 1 - i);
			
// Ausgabe
Console.WriteLine("Die Dezimalzahl beträgt " + DezimalZahl);
Console.ReadKey();
Wenn du was nicht verstehst, frag einfach nochmal :-)

btw. Ist das hier die C/C++ Sektion, nicht C# :-P
06/10/2014 21:44 Mostey#3
Quote:
Originally Posted by マルセル View Post
Habe einfach mal deine Variablen ungefähr übernommen, wobei deutsche Variablen immer doof sind.. :|

Code:
Console.WriteLine("Geben Sie die Binäerzahl ein");
string BinaerZahl = Console.ReadLine();
int DezimalZahl = 0;

// String mit Regex überprüfen, ob er denn auch wirklich eine Binäerzahl ist
if (!Regex.IsMatch(BinaerZahl, "[01]{1,}"))
	Console.WriteLine("DAS IST KEINE BINÄRE ZAHL");
else
	for (int i = 0; i < BinaerZahl.Length; i++)
		// Wenn das aktuelle Zeichen eine 1 ist
		if (BinaerZahl[1] == '1')
			// 2^aktuelle position
			DezimalZahl += (int)Math.Pow(2, BinaerZahl.Length - 1 - i);
			
// Ausgabe
Console.WriteLine("Die Dezimalzahl beträgt " + DezimalZahl);
Console.ReadKey();
Wenn du was nicht verstehst, frag einfach nochmal :-)

btw. Ist das hier die C/C++ Sektion, nicht C# :-P
Wieso so umständlich?

Code:
int myNumber = Convert.ToInt32(myBinaryStr, 2);
-> [Only registered and activated users can see links. Click Here To Register...]

Quote:
fromBase
Type: System.Int32
The base of the number in value, which must be 2, 8, 10, or 16.