ascii zu binär
-
wie kann ich eine ascii-zeichenkette in's binäre format umwandeln? (google war schweigsam)
-
Also ich habe mal eine sehr einfache Form codiert, ich hoffe Du lernst was draus.
Zuerst mal eine Funktion die Dir jede bel. lange Zeichenkette in eine Binärkette konvertieren kann.
/* Eine etwas primitive Form; sie ist nur zum lernen gedacht. Versuche Sie zu verstehen, dann ist eine Anpassung ans Konvertieren von Zahlen sicher kein Problem mehr... ;) */ int AsciiToBinaryString(const char *ascii, char *binary) { int len=strlen(ascii); //Länge der Zeichenkette ermitteln if(len==0) return len; //aufhören falls Quelle leer ist binary[0]='\0'; //erstes Byte im Zielpuffer setzen (sicherheitshalber) for(int i=0; i<len; i++) //alle ASCII-Zeichen der Quelle durchlaufen... { //alle Bits eines ASCII-Zeichen durchlaufen, begin mit Höchstwertigem for(int j=128; j>=1; j>>=1) { if((ascii[i]&j) == j) //prüfen ob Bit gesetzt strcat(binary,"1"); //ja, dann eine 1 schreiben else strcat(binary,"0"); //nein, dann eine 0 schreiben } //hier sind nun die 8 Bit eines Zeichens in einen String konvertiert //jetzt sollte zur besseren Lesbarkeit ein Separator eingefügt werden strcat(binary," "); //ein Leerzeichen als Trennzeichen einfügen } return i; //Anzahl konvertierter Zeichen zurückgeben }Nun noch ein Anwendungsbeispiel:
/* Anwendungsbeispiel: buf: Nimmt die konvertierte Zeichenkette auf, für die richtige Größe musst selber sorgen! eingabe: ein Puffer der eine Zeichenkette vom User entgegennimmt anzahl=Anzahl der konvertierten Zeichen */ int main(int argc, char* argv[]) { int anzahl=0; //Mindestgröße muß sein: Anzahl_Zeichen * 8 + Anzahl_Zeichen + 1 //es werden ja 8 Binärzeichen pro ASCII-Zeichen benötigt, //dann ist immer noch ein Separator dazwischen (je einer pro ASCII-Zeichen) //dann muß der String noch ein abschliessendes \0 aufnehmen können //Prüfung ob Speicher reserviert werden konnte lass ich hier mal weg! char *buf=new char[200]; //sollte pauschal gross genug sein... auweia wenn nicht ;) char eingabe[21]={0}; //Eingabepuffer printf("Bitte ein Text eingeben, max. 20 Zeichen (keine Leerzeichen!): "); scanf("%20s", eingabe); //Eingabe entgegennehmen und im Puffer ablegen eingabe[20]='\0'; //zur Sicherheit nochmal mit \0 abschliessen anzahl=AsciiToBinaryString(eingabe, buf); //Eingabe konvertieren lassen printf("%d Zeichen wurden Binaer konvertiert:\n%s", anzahl, buf); //Ergebnis ausgeben delete [] buf; //dynamisch reservierten Speicher freigeben return 0; }Ich hoffe das hilft Dir erstmal, ne Info obs tut wär dann mal net schlecht

Gruss