[C++] Text zu binär und umgekehrt

So! Nach etwas Umformung hat es funktioniert! Aber ein Fehler bleibt!!

Hier der jetzige Code:
Code:
	     String ^txt = textBox1->Text;
	     StringBuilder sb = gcnew StringBuilder(); //Hier passiert der Fehler!

                 CharEnumerator ^enumerator = txt->GetEnumerator();
                 while (enumerator->MoveNext())
                 {
                     Char c = enumerator->Current;

                     Int16 myInt = (short)c;
                     sb.Append(myInt >= 128 ? "1" : "0");
                     if (myInt >= 128) myInt -= 128;
                     sb.Append(myInt >= 64 ? "1" : "0");
                     if (myInt >= 64) myInt -= 64;
                     sb.Append(myInt >= 32 ? "1" : "0");
                     if (myInt >= 32) myInt -= 32;
                     sb.Append(myInt >= 16 ? "1" : "0");
                     if (myInt >= 16) myInt -= 16;
                     sb.Append(myInt >= 8 ? "1" : "0");
                     if (myInt >= 8) myInt -= 8;
                     sb.Append(myInt >= 4 ? "1" : "0");
                     if (myInt >= 4) myInt -= 4;
                     sb.Append(myInt >= 2 ? "1" : "0");
                     if (myInt >= 2) myInt -= 2;
                     sb.Append(myInt >= 1 ? "1" : "0");
                     if (myInt >= 1) myInt -= 1;
				 }

            textBox2->Text = sb.ToString();

Und hier der Fehler:
Code:
error C2664: 'System::Text::StringBuilder::StringBuilder(int)': Konvertierung des Parameters 1 von 'System::Text::StringBuilder ^' in 'int' nicht möglich

Frag mich bitte nicht, was das soll!

Mfg
Termy2007
 
Hi,ich hätte mal eine frage warum dieses program nicht funktioniert,fehler sind keine darin.Also ausführen kann es das C++ aber nur bis zur if-verzweigung und dann muss ich wieder abbrechen.WEIß wer warum?


mfg


#include<iostream>
using namespace std;


void main()
{ //Vereinbarungsteil
int gbd;
char nm,f,p;



cout<<endl<<" Bitte gbd eingeben "<<endl;
cin>>gbd;
cout<<endl<<" Bitte nm eingeben "<<endl;
cin>>nm;



if(nm == f) //weg

cout<<endl<<"Mein name ist: fuchsi"<<endl;

else
if(nm == p)

cout<<endl<<"Mein name ist: patsi"<<endl;

cout<<endl<<"Mein Geburtsdatum ist: "<<gbd<<endl;
cout<<endl<<"Mein name ist: "<<nm<<endl;

}
 
Hallo Termi,

mit dem Code

Code:
int i = 0;
    while (i < text_lenth)
    {
    }

wollte ich dir nur deinen Fehler in der Schleifenbedingung aufzeigen. Den Inhalt musst du natürlich schon drinnlassen, damit was passiert ;-)

Hallo fuxi019,

der Fehler, der bei dir in der if-Bedingung auftritt ist der, dass du gegen eine uninitialisierte Variable auf Gleichheit prüfst

char f;
...
if(nm == f) //weg

Du deklarierst zwar die variable f, initialisierst diese aber vor Ihrer ersten verwendung nicht

Dies solltest du immer beim programmieren beachten! Variablen immer initialisieren.

Das selbe gilt natürlich auch für die variable p ;-)

Schreibe es so:

Code:
    char a = 'a'; // Erzeuge Variable mit Namen a und weise ihr den char-Wert 'a' zu
    char b = 'b';
    cin >> b;

    if( a == b ) { // Entspricht der eingegebene Wert, welcher jetzt in b gespeichert istdem Wert, welcher in a steht(also 'a').

    }

Ciao,

Peter
 
Nagut..hat zwar nix mit mir zu tun...aber egal.
Ich geb auf! Vielleicht werd ich es in einer Woche nochmal mit einem neuen Ansatz versuchen. Oder jemand erklärt sich bereit mir die ganze Geschichte für C++ zu erklären! So dass es funktioniert!

Inmoment hab ich nur noch das Problem, dass er mir des txt->GetEnumerator() nicht in einen int-Wert umwandeln will! Sonst scheint alles zu funktionieren.
Hat jemand eine Idee?
 
Hi termy,

das war ein tierisches Missverständnis von mir :)

Ging die ganze Zeit von c# aus.

Hier noch mal den ganzen Kram in reinem C:

Code:
// Diese Funktion konvertiert einen String in seine entsprechende binäre Darstellung
char *convertStringToBinaryString(char *in) {
    int len = strlen(in);
    char *retBuff = new char[len*9-1]; // Neues char array erzeugen mit genausoviel platz, wie die binäre darstellung brauch
    memset(retBuff,0,len*9-1);
    int j = 0; // Iteratorvariable, um über das Ziel-Chararray zu laufen
    for( int i = 0; i < len; i++ ) {
        int x = in[i];
        retBuff[j++] = (x >= 128 ? '1' : '0');
        if (x >= 128) x -= 128;
        retBuff[j++] = (x >= 64 ? '1' : '0');
        if (x >= 64) x -= 64;
        retBuff[j++] = (x >= 32 ? '1' : '0');
        if (x >= 32) x -= 32;
        retBuff[j++] = (x >= 16 ? '1' : '0');
        if (x >= 16) x -= 16;
        retBuff[j++] = (x >= 8 ? '1' : '0');
        if (x >= 8) x -= 8;
        retBuff[j++] = (x >= 4 ? '1' : '0');
        if (x >= 4) x -= 4;
        retBuff[j++] = (x >= 2 ? '1' : '0');
        if (x >= 2) x -= 2;
        retBuff[j++] = (x >= 1 ? '1' : '0');
        if( i == len-1) {
            retBuff[j++] = '\0';
        }
        else {
            retBuff[j++] = ' '; // Leerzeichen nach einer gesamten Binären Darstellung (8-Zeichen) einfügen
        }
    }
    return retBuff;
}

Vergiss nicht, den Speicher (retBuff) in der aufrufenden Funktion zu löschen :)

Wenn dir das auch nicht auf die Sprünge hilft, weiss ichs auch net..

Gruß,

Peter
 
Also Profi würd ich mich jetzt net nennen, vielleicht recht erfahren ;-)

Umgekehrt sieht das in reinem C dann so aus:

Code:
// Diese Funktion konvertiert einen genau 8Zeichen langen binärstring in den entsprechenden Char-Wert um
char CmfcdlgApp::convertBinaryStringCharToChar(char *in) {
    if( strlen(in) != 8 ) {
        // Kein gültiger binärstring
        return (char)0;
    }
    int i = 128;
    int value = 0;
    for( int j = 0; j < 8; j++ ) {
        char c = in[j];
        if( c == '1') {
            value += i;
        }
        else if(c != '0' ) {
            // Kein gültiger Binärstring !! Nur 1 und 0  sind erlaubt
            return (char)0;
        }
        i /= 2;
    }
    return (char)value;
}


Und jetzt komm doch endlich mal mit neuen Fragen rüber.
Keinen Bock mehr auf Binärstrings ;-)

Gruß,

Peter
 

Neue Beiträge

Zurück