[C/C++] Hex to Ascii/Unicode in C

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Calyx, 5. April 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. April 2010
    Hex to Ascii/Unicode in C

    Hallo,

    suche einen Algo in C der mir Hexadezimale in Ascii-Zeichen umwandelt (aus Hex '41' wird Ascii 'A', usw). Hab schon einiges gefunden aber leider nix in C, in C#/C++ scheints für sowas Klassen zu geben...und ums selbst zu machen fehlt mir irgendwie der Ansatz.

    mit printf kann man ja durch "%x" ganz einfach hex erstellen, nur der umgekehrte weg mit scanf funktioniert nicht.

    Weiß da jmd was?
     
  2. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    Setzt einfach vor den Hex-Wert den Prefix 0x (0x41) dann sollte es gehen.

    Mfg Rushh0ur
     
  3. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    ah, gut zu wissen, aber leider ist das layout von der datei aus der gelesen werden soll vorgegeben und da sind nur die hexwerte ohne 0x drin.
     
  4. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    Dann les sie ein, und schiebe nach dem, oder beim einlesen das 0x vor. Könntest es als String nehmen und dann 2 Strings zusammensetzen.


    grüße
     
  5. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    jo wäre auch ne möglichkeit, aber gibts dafür keine fertige funktion oder nen header?

    das is richtig nervig das so zu machen, weil das auch alles durcheinander ist in der datei, für verschiedene typen aus der datei andere schlusszeichen benutzt werden und alles in strukturen gepackt werden muss...

    trotzdem danke
     
  6. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    Wenn die datei so kompliziert gestrickt ist, dann zeig doch mal die datei...

    würde jedem hier besser helfen mit deiner aufgabenstellung weiter zu kommen.


    grüße
     
  7. 5. April 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Hex to Ascii/Unicode in C

    ok, also so sehen datei&struktur aus:
    Spoiler
    Bild

    kp obs für nen erfahrenen progger kompliziert ist, haben bisher nur reinen text in dateien geschrieben oder ausgelesen

    // und so pack ich das in die datei, wobei ich ggf. noch den offset vors jeweilige byte schreiben muss, werd ich morgen erfahren obs unbedingt sein muss. naja, soll jetzt auch net das problem sein:
    Spoiler
    PHP:
    void writeDataToFile char filename char airport pdepart_t proot  ) {
      
        
    FILE  * fp ;
        
    int bitzahl  0 ;
        
    int i  0 0 ;

         
    fp  fopen ( filename "wt" );                             
        
    if( fp  ==  NULL )                                     
            
    else {                                  
              
    for( 0 strlen ( airport );  i ++){   
                
    fprintf ( fp "%0.2x " airport [ i ]);                
                
    bitzahl ++;                                 
                
    if( bitzahl  ==  16 ){  fprintf ( fp "\n" );  bitzahl  0 ;} 
          } 
    // for..
          
    fprintf ( fp "00 " );    
          
    bitzahl ++;             
          if(
    bitzahl  ==  16 ){ fprintf ( fp "\n" );  bitzahl  0 ;}
              while(
    proot  !=  NULL ){                        
             
    for( 0 strlen ( proot -> Carrier );  i ++){
                 
    bitzahl ++   ;                              
             
    if( bitzahl  ==  16 ){ fprintf ( fp "\n" );  bitzahl  0 ;}
             
    fprintf ( fp "%0.2x " proot -> TDm );       
             
    bitzahl ++;                                 
                 
    if( bitzahl  ==  16 ){ fprintf ( fp "\n" );  bitzahl  0 ;}
                 for(
    0 strlen ( proot -> Pdest );  i ++){     
               
    fprintf ( fp "%0.2x " proot -> Pdest [ i ]);
               
    bitzahl ++;                               
                   
    if( bitzahl  ==  16 ){ fprintf ( fp "\n" );  bitzahl  0 ;}
                 } 
    // for..
             
    fprintf ( fp "00 " );  bitzahl ++;        
               
    if ( bitzahl  ==  16 ){ fprintf ( fp "\n" );  bitzahl  0 ;}
                 
    proot  proot -> pnext ;              
             
    // while..
         
    fclose ( fp );                                          
        
    // else..
    // writeDataToFile()
    sry für die formatierung...
     
  8. 5. April 2010
    AW: Hex to Ascii/Unicode in C

    Em des ist nen Hex-Dump aus einer Binärdatei, bist du dir sicher das du eine Hexdump-Text Datei erstellen/auslesen sollst, ist meiner Meinung nach etwas komplitziert(er)?

    Hmm, ich würd sagen du hast die Aufgabenstellungen nicht ganz verstanden evtl. aufgrund deswegen das du nur reinen Text bis jetzt geschrieben hast.

    Ich denke du sollst die Datei im binär Format schreiben, sprich von der Struktur her zuerst ein Nullterminierten String mit dem Flughafennamen und anschliessend alle Datensätze mit dem folgendem Muster schreiben:
    FNr: 6 Bytes
    Stunde: 1 Byte
    Minute: 1 Byte
    Ziel: String Nullterminiert

    Und beim auslesen am besten die komplette Datei einlessen und dann die Datenstruktur aufbauen.

    Die zwei Funktionen sollten dir dabei helfen:
    fwrite, fread

    Ach um eine Datei als Hex-Dump anzuschauen würd ich dir zu einem Hexeditor raten um dies besser zu verstehen, kannst dafür den kostenlosen Tiny-Hexer nehmen.

    Mfg Rushh0ur
     
  9. 6. April 2010
    AW: Hex to Ascii/Unicode in C

    habs jetzt genauso gemacht, mit fopen im binärmodus öffnen, bis EOF einlesen und dann zeichenweise der struktur zu weisen... es kann manchmal so einfach sein

    vielen dank für den tipp!
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.