HEX to ASCII

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gora
Beiträge: 58
Registriert: 30.04.2004 21:27:43

HEX to ASCII

Beitrag von gora » 13.03.2006 16:14:28

Ich möchte einen als Parameter übergebenen String (z.B.: 3F) in den entsprechenden character umwandeln laut Ascii-Tabelle. Wie geht das?

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 13.03.2006 16:20:26

Welche Sprache?

gora
Beiträge: 58
Registriert: 30.04.2004 21:27:43

Beitrag von gora » 13.03.2006 16:21:28

Ups, C.

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 13.03.2006 16:46:28

Code: Alles auswählen

static int hex2int(char c) 
{
  if(c >= '0' && c <= '9')
    return c - '0';
  if(c >= 'A' && c <= 'F')
    return c - 'A' + 10;
  if(c >= 'a' && c <= 'f')
    return c - 'a' + 10;
  return -1;
}
edit: Achso, die Funktion wandelt nur eine Stelle in einen Int-Wert um. Um also einen gesamten String umzuwandeln, halt Zeichen für Zeichen vorgehen und halt mit der entsprechenden 16er-Potenz multiplizieren. Ein bißchen Eigenarbeit muß ja noch sein. :wink:

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 13.03.2006 17:48:36

Nana, warum so umständlich?

Code: Alles auswählen

#include <stdlib.h> // strtol
#include <stdio.h>  // printf

int main(int argc, char** argv)
{
   if (argc<2)
   {
        printf("Parameter benötigt!\n");
        exit(1);
   }
   printf("Das ASCII-Zeichen für %s ist: '%c'\n",
          argv[1],
          strtol(argv[1], NULL, 16)
          );
}

gora
Beiträge: 58
Registriert: 30.04.2004 21:27:43

Beitrag von gora » 13.03.2006 20:40:00

Aha, strtol; ich hab mit sprintf herumprobiert. Danke!

Antworten