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
