char wandeln



  • kodiert ist ja ein string. Du musst das dann aber Zeichenweise machen.

    char kodiert = "";
    while( fscanf( Dest, "%c", static_cast< int >kodiert) != EOF )
    

    Allerdings weiß ich jetzt nicht genau wie das mit dem vergleichen bei Dir sein soll. Steht in ausgabe denn eine Dezimalzahl, oder wie? So ganz hab ich Deine Erklärung nicht verstanden, aber auf jeden Fall kannst du nen char so wie oben in einen int konvertieren.



  • also kodiert ist ein char [100] und in CString ausgabe steht eine ganz normaler string, den ich eingebe, z.B.eine seriennummer: 16113C
    diese will ich auch in der textdatei stehen haben, bloß eben als dezimal,
    also: 495449495167
    mfg



  • Dann kannst Du Dir doch jedes Zeichen aus Ausgabe holen und dieses in int konvertieren und in die textdatei einfügen. Also ungefähr so:

    char *pAusgabe = ausgabe.GetBuffer( 0 );
    int dezimal = 0;
    for( unsigned int index = 0; index < ausgabe.GetLength(); ++index )
    {
      dezimal = static_cast< int >( pAusgabe[ index ] );
      // und dezimal in die Textdatei einfügen
    }
    


  • wieder falsch.
    ich möchte den CString ausgabe, den ich normal in einem editfeld eingebe, mit einem
    String (wird in char kodiert[100] geschrieben) der textdatei vergleichen.der string soll aber in der textdatei dezimal drinstehen.beim vergleichen muss ich ja den dann
    umwandeln.



  • Aber das is doch dasselbe Prinizip. Dann wandelst Du eben jedes Zeichen das Du eingelesen hast von int in char.



  • kann ich nicht.ich muss das aus der datei wandeln.also in textdatei müssen dezimalwerte stehen und die muss ich wandeln ins normale ausgabeformat.



  • hat denn keiner ne idee ??? 💡



  • Das Problem was Du damit haben wirst ist:

    Gehen wir mal davon aus, es steht "656" in Deiner Textdatei.

    Ist das nun:
    "6" und "5" und "6"
    oder
    "65" und "6"
    oder
    "6" und "56" ???

    Solange Du kein Trennungszeichen zwischen die Zeichen (in deinem obigen Beispiel also):

    49|54|49|49|51|67

    packst, wirst Du das kaum lösen können...
    (In meinem Beispiel hab ich nun das "|" als Trennungszeichen eingesetzt, das kannst Du aber frei wählen, z. B. auch ein "\n").



  • also jedes zeichen ist eigenständig, d.h ne 33042 ist dezimal ne 5151485250.
    es kommen ja auch buchstaben drin vor.



  • du willst also eine maximal 100 byte lange Dezimalzahl in Hex wandeln und umgekehrt, oder ? Na das ist nicht _ganz_ so einfach da würde ich mir einen andern Weg für eine Seriennummer aussuchen z.B. md5hash

    Joe



  • in der textdatei soll die seriennr. dezimal drinstehen.und die muss dann umgewandelt werden in ein normales druckbares zeichen.
    text:48->im programm:0 usw.
    die gewandelte zahl wird dann mit dem CString ausgabe verglichen, welcher eingegeben werden muss.
    der char kodiert[100] kann auch bloß char kodiert[10] sein. 😋



  • fevernova schrieb:

    in der textdatei soll die seriennr. dezimal drinstehen.und die muss dann umgewandelt werden in ein normales druckbares zeichen.
    text:48->im programm:0 usw.
    die gewandelte zahl wird dann mit dem CString ausgabe verglichen, welcher eingegeben werden muss.
    der char kodiert[100] kann auch bloß char kodiert[10] sein. 😋

    also nehmen wir mal an ich habe dich richtig verstanden so steht also in der Datei:

    1023

    du liest das ein und hast einen Sting

    char[4] ansi = "1023"
    

    diesen möchtst du umwandeln in eine Zahl

    in dem Fall

    int zahl = atoi(ansi ); // nicht cpp und nicht Plattformunabhänig gibt es aber auch in std C solche Funktionen bin aber zu faul zum suchen
    

    dann möchtest du diese in einen Strin in Hexformat wandeln

    char[100] hex;
    itoa(zahl ,&hex, 16); // auch kein cpp und std c
    

    ausserdem gibt es viele Beträge zu diesem Thema in diesem Forum und auch cpp kompatible Antworten. Einfach mal suchen!

    Und alles was ich hier geschrieben habe ist quick und sehr dirty.

    Joe


Anmelden zum Antworten