Bitte um Hilfe.



  • Hallo zusammen

    Ich Studiere Elektrotechnik und muss im Rahmen einer Übungsarbeit ein Programm schreiben das einen eingegebenen Satz mit verschiedenen CRC-Codes überprüft.
    Ich habe aber leider beim Einlesen des Satzes schon so meine Probleme 🙂

    Es soll folgendermaßen realisiert werden. Der eingelesene Satz soll/kann mit hilfe einer Biliothektsfunktion in den Entsprechenden ASCII wert umgewandelt werden und jener soll dann als Binärzahl ausgegeben werden.

    Also zum Beispiel:

    "A"---> 65 ----> 0100 0001

    Dies soll wie gesagt mit einem ganzen Satz geschehen.

    Ich bin leider noch nicht so bewandelt in C++ deswegen würde ich mich über jede Hilfe freuen. Besonders welche Bibliotheksfunktion ich benutzen könnte/soll, oder wie ich den ASCII Wert in oben beschreibens Bitmuster bringe.

    Im vorraus schon mal Herzlichen Dank für die Hilfe 🙂

    Mfg



  • der satz soll in einen ascii wert verwandelt werden? ich glaube, das geht nicht. aber du kannst dir gerne jedes einzelne zeichen als ascii-wert ausgeben lassen

    string foo = "abc";
    cout << int(foo[0]) << int(foo[1] << ...
    //oder mit static_cast<int> (foo[0])
    

    und um das ganze als bitfolge anzeigen zu lassen, könntest du bitweise dein zeichen mit einem AND prüfen (dein_zeichen & 1 für das erste; dein_zeichen & 1<<1 für das nächste; dein_zeichen & 1<<2 für das übernächste usw.)

    und mit schleifen wirst du ja wohl umgehen können 🙂



  • Schau mal hier
    nachhttp://www.c-plusplus.net/forum/viewtopic-var-t-is-39490.html
    Ich empfehle die Variante mit dem bitset (hat bei mir perfekt geklapt) 🙂



  • Du kannst einen char* Zeiger auf deine Zeichenkette zeigen lassen, mit dem kannst du dann in deinem Satz von Byte zu Byte hüpfen.
    Jedes deiner Bytes hat 8 Bit, die du nun einzeln prüfen musst, ob gesetzt oder nicht.
    Dafür kann man eine "wandelnde Bitmaske" erstellen, die von n = 128, n = 64, ... abwärts bis n = 1 geht und durch UND-Verknüpfung jedes der 8 Bit eines Byte prüft.

    Dann kannst du an der Prüf-Stelle in eine Funktion hüpfen, nennen wir sie mal CRC_Polynomizer *g*, die deine CRC Polynome bastelt.
    Hier ein Vorschlag für die Bitprüfung:

    #include <stdio.h>
    
    void CRC_Polynomizer( unsigned int iBit )
    {
    	printf( "%i", iBit ); 
    }
    
    int main ( int argc, char* argv[] )
    {
    	char pcSatz[] = "ABCDEFGHIJLKMNOPQRSTUVWXYZ";
    	unsigned int i = 0, n=0, iBit = 0;
    
    	for( i = 0; i< strlen(pcSatz) -1; i++ )
    	{	
    		printf("%c: ", pcSatz[i] );
    		for ( n = 128; n>=1; n /= 2 )
    		{
    			if( ( iBit = ( pcSatz[i] & n  ) ) )
    			{
    				iBit = 1;
    			}
    			// automatic else implizit in if ;-)
    			CRC_Polynomizer( iBit );
    		}
    		puts("");
    	}
    }
    

    Gruß,
    p.



  • #include <iostream>
    #include <string>
    #include <bitset>
    
    int main()
    {
    	using namespace std;
    
        string eing ("Morgen ist Ostern.");
    
        for (int i = 0; eing[i]; i++)
        {
            bitset<8> bset(eing[i]);
    
            cout <<  "\"" << eing[i] << "\"" 
                 << "--->\t" << (int)eing[i] 
                 << "\t----> " << bset.to_string() 
                 << endl;
        }
    }
    

    🕶 😃



  • OSTERHAASE schrieb:

    #include <iostream>
    #include <string>
    #include <bitset>
    
    int main()
    {
    	using namespace std;
    
        string eing ("Morgen ist Ostern.");
    
        for (int i = 0; eing[i]; i++)
        {
            bitset<8> bset(eing[i]);
            
            cout <<  "\"" << eing[i] << "\"" 
                 << "--->\t" << (int)eing[i] 
                 << "\t----> " << bset.to_string() 
                 << endl;
        }
    }
    

    🕶 😃

    Wie ich gesagt habe 😉



  • super danke habt mir richtig weitergeholfen 😃


Anmelden zum Antworten