# hex Zahl in ASCII umwandeln



## Bastih84 (5. August 2005)

Ich habe folgendes Problem:

Ich habe einen DVB transportstrom binär eingelesen, jetzt sind darin aber auch ASCII Zeichen enthalten, welche er mir als hex-Zahlen darstellt, jetzt wollte ich wissen, wie ich hex-Zahlen wieder in ASCII Zeichen umwandle, oder nicht möglich


----------



## BadPhantom (5. August 2005)

Moin,

 antwortet mir hiermit:
http://www.phim.unibe.ch/comp_doc/c_manual/C/FUNCTIONS/hex_tab.html

http://fly.hiwaay.net/~jfrohwei/tech/table.html

Hilft das?


----------



## Bastih84 (5. August 2005)

Nicht so richtig, ich suche einen Befehl, ein Algorithmus, mit dem ich eine Hex-Zahl als ASCII Zeichen Ausgeben kann, ich kann zwar 48 if Abfragen machen, aber da gibt es bestimmt einen einfachen Befehl der mir das wandelt, oder Die Tabelle ist mir im Laufe meines Studiums ja schon öfter über den Weg gelaufen, nur fehlt mir gerade die zündende Idee die Geschichte umzuwandeln


----------



## BadPhantom (5. August 2005)

Da wäre meine erste Idee ein dicker, langer Array, in dem jeweils die Ascii Werte stehen.

   Eine andere, weniger tippintensive wäre eine fertige Funktion oder Bibliothek..

   ..Musst mal Google fragen.. !?

   Hast Du schon in MSDN nachgesehen?

    MSDN hat eine Funktion aus <ctype.h> gefunden:
  int  _toascii


```
int __toascii(    int c  );
```


----------



## RedWing (5. August 2005)

So kannst du eine Hexadezimale Zahl innen string umwandeln:


```
#include <iostream>

using namespace std;

void hexnum_to_hexstring(int hexnumber, string& result){
        int pot = 1;
        for(;pot <= hexnumber; pot *= 16);
        while(hexnumber > 0){
                pot = pot / 16;
                int res = hexnumber / pot;
                hexnumber = hexnumber - (pot * res);
                res = (res > 9)?  res + 55: res + 48;
                result += res;
        }
}
int main(){
        string erg;
        int hexa = 0xabc;
        hexnum_to_hexstring(hexa, erg);
        cout << erg << endl;
}
```

Wenns dir nur um die ausgabe geht:

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

int main(){
        cout << hex << 0xabc << endl;
}
```

Gruß

RedWing


----------



## Bastih84 (6. August 2005)

Das ist alles nicht so dass, was ich eigentlich suche, also ich habe z.B. einen Wert 0x1b und will diesen als Zeihen ausgeben, z.b. A (nur als Bsp.). D.h. ich suche einen Befehl oder ein Programm, das mit einen hex Wert 0x12 als ASCII/Buchstaben ausgibt, meine hex Werte  werden Bytweise verarbeitet, meine folge von hex-Werten sollte eichentlich ein bestimmtes Wort ergeben, also quasi gerade andersrum arbeiten, als das Programm was ihr mir angeboten habt

Danke


----------



## MCoder (6. August 2005)

Das sollte doch dann mit einer simplen Formatierung, wie z.B. in printf oder scanf vorhanden, funktionieren:


```
char c = 0x41; // Buchstabe 'A'
printf("%c", c);
```

oder 


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

char c = 0x41; // Buchstabe 'A'
cout << c << endl;
```

Wo willst du die Werte eigentlich ausgeben/anzeigen, Konsole, Fenster, Datei ... ?


----------



## Bastih84 (6. August 2005)

Das hat mir jetzt weitergeholfen, wollte in der Konsole nur ein paar Zahlen in ASCII Zeichen umwandeln, nur zur Ausgabe in der Konsole


----------

