Einen Char zu einer Binär zahl convertieren



  • Guten Morgen liebe Community,

    ich möchte mich an einem kleinen Verschlüsselungs Programm versuchen und habe mir dabei gedacht das ich einen String aufteile und jedes zeichen(sowohl Zahl als auch Buchstaben) in eine Binär zahl umwandle. Dazu habe ich den String aufgetielt und die zeichen in einen Char gespeichert.

    Crypt_String = Memo1->Text;     //Hier holt er sich den String 
    	int Anzahl = Crypt_String.Length(); //Wie viele zeichen hat er? 
    	for (int i = 1; i <= Anzahl; i++) {
    		if (i == 1) {
    			crypt_str_zech = Crypt_String.SubString(1,1); //Das erste zeichen
    		}
    		else {
    			crypt_str_zech = Crypt_String.SubString(i,1); // Zweite und die danach
    		}
    			char *crypt_char = new char[crypt_str_zech.Length()]; // erstellen eines char's mit der länge des zeichens
    			StrCopy(crypt_char, crypt_str_zech.c_str()); // cont *char zu char
    			//Memo2->Lines->Add(static_cast<int>(crypt_char)); // war ein test den ich im Internet gefunden hatte, welcher aber nur 0 zurück gab
    
    		}
    

    Meine Frage ist jetzt wie ich diesen Char in die dazugehörige Binär zahl wandle. Muss ich dazu über Die ASII Zahl gehen oder wie mach ich das ? 😕

    Grüße
    Sonfix



  • Hallo,

    Du machst es dir aber reichlich umständlich. Welchen Typ hat denn crypt_str_zech?



  • Hallo,
    ja ich hab mein Programm schon überarbeitet, und kann nun ohne Probleme umwandeln.

    Crypt_String = Memo1->Text;
    	int Anzahl = Crypt_String.Length();
    	for (int i = 1; i <= Anzahl; i++) {
    			//Zerlegen des Strings in einzelne zeichen
    			crypt_char = Crypt_String[i];
    			ascii = crypt_char;
    			AsciiToBinary(ascii);//Eigene Funktion die Dezimal in Dual umwandelt.
    

    crypt_char ist ein char, Crypt_string ein string und ascii ist ein Integer.



  • funktioniert das auch so für UnicodeString ?
    mir hat man mal erzählt das ein UnicodeString aus mehreren Zeichen bestehen kann
    und dann wäre das hier ja nutzlos: crypt_char = Crypt_String[i];



  • Ja eigentlich sollte es auch funktionieren aber mein COmpiler hat mir immer einen Fehlerausgespuckt das es ihm nicht möglich ist das zu Kompilieren.



  • Prinzipiell funktioniert das auch. Nur muss crypt_char dann vom Typ wchar_t sein (bzw. WideChar bei VCL).



  • Hey cool danke für die Info.



  • So hab das mal für UnicodeString in meinen RadStudio XE5 schnell mal umgebastelt, es fehlt aber die eigentliche Funktion AsciiToBinary

    UnicodeString Crypt_String = Memo1->Text;
    WideChar crypt_char;
    int ascii;
    int Anzahl = Crypt_String.Length();
    
    for (int i = 1; i <= Anzahl; i++)
    {
    	WideChar crypt_char = Crypt_String[i];	//Zerlegen des Strings in einzelne zeichen
    	ascii = crypt_char;
    	AsciiToBinary(ascii);			//Eigene Funktion die Dezimal in Dual umwandelt.
    }
    


  • #include <bitset>
    
    AnsiString AsciiToBinary (int ascii)
    {
       std::string binary = std::bitset<8>(ascii).to_string();
       return binary.c_str();
    }
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	UnicodeString Crypt_String = Memo1->Text;
    	WideChar crypt_Wchar;
    	int ascii;
    	int Anzahl = Crypt_String.Length();
    
    	for (int i = 1; i <= Anzahl; i++)
    	{
    		crypt_Wchar = Crypt_String[i];  	//Zerlegen des Strings in einzelne zeichen
    		ascii = crypt_Wchar;
    
    		ShowMessage(AsciiToBinary(ascii));	 //Convert Dezimal in Dual .
    	}
    }
    

Log in to reply