Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : String -> ASCII -> Binär



MadB
11-03-2003, 20:36
Moinsen Leute!

Tja, das ist bestimmt eine recht häufig gestellte Frage.
Doch ich habe noch nix vernünftiges gefunden. Bin noch sehr neu bei C++.

Ich will also einen beliebigen String von der Standardeingabe einlesen.
Jeden enthaltenen Buchstaben (oder auch Ziffer) dann in den entsprechenden ASCII-Wert (dezimal) umwandeln. Und jenen Wert nach Binär umwandeln.
Und diese binären Werte sollten am Ende wieder zusammengefügt werden. Am Ende sollte also eine Kette von 8-Bit-Blöcken für die entsprechenden ASCII-Werte rauskommen.
Und das möglichst in C++.

Ich hatte nun schon damit angefangen, kann aber gerade mal einen einzelnen ASCII-Wert in den entsprechenden Dezimal-Wert umwandeln.
Aber da fehlt ja noch jede Menge.

Hätte eventuell jemand ein paar Tipps für mich?

Fragende Grüße

Torsten

tuxipuxi
12-03-2003, 08:27
hallo,

also erstmal willst du den string einlesen.
dazu koenntest du die klasse string benutzen:



#include <string>
using namespace std;


jetzt musst du den string einlesen:



string myString;
cin >> myString;


jetzt willst du jeden einzelnen Buchstaben/Wert einzeln in ASCII umwandeln. dafuer nimmt man am besten die funktion substr aus der stringklasse. die referenz sagt zu dieser funktion:




substr
Syntax:

basic_string substr( size_type index, size_type num );

The substr() function returns a substring of the current string, starting at index, and num characters long.


beispiel :




string myString = "tuxipuxi";
string puxi = myString.substr( 5, 4 ); //puxi = "puxi"



nun koennten wir natuerlich eine Map benutzen mit Key/Value-Pairs wo fuer den entsprechenden Wert der den entsprechenden wert enthaelt.. aber das ist ja irgendwie auch doof. ( zu grosse map fuer meinen geschmack ).

eine Tabelle welcher wert zu was gehoert findest du bei :
http://www.cppreference.com/ascii.html

also was das angeht musst du dir wohl selber ne funktion ( und die gibt es sicher, stoeber mal bei cppreference ) suchen.

ich probier nur mal jetzt n beispiel mit jeden wert bekommt ein string ( nicht schoen, muesste aber gehen ).




#include <iostream>
#include <string>
using namespace std;

int main( int argc,char* argv[] ) {

cout<<"enter a string\n";

string line;
cin >> line;

string stringarray[line.length()]; //ein array wo jedes stringzeichen sein string bekommt
//koennte fehlermeldung geben weil line.length() nicht konstant ist
//dann muss man einfach n int mit der length und das dann als arraygroesse angeben

for( int i=0; i < line.length(); ++i ) {

stringarray[i] = line.substr( i, 1 );

}



ungetestet, da mein compiler ATM im eimer ist :).

hoffe das hat n bisschen geholfen.

gruss tuxipuxi

MadB
12-03-2003, 09:07
Hallöle!

Besten Dank für das posting.
Das Einlesen habe ich gestern Nacht auch noch gebacken bekommen. Aber auf einem anderen Wege.
Aber Deine Geschichte schau ich mir sofort an.

Nun kommen aber erst die interessanten Sachen. Also Umwandlung nach Dezimal und dann nach Binär.

Na mal schauen, was der heutige Tag bringen wird.

Grüße

Torsten