C
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