Konvertieren von Ascii-Zahl in Hex in C

Verwende ich folgende Funktion zum konvertieren eines Werts in hex zu ASCII:

void hex_to_ascii(unsigned char* buf, unsigned char number)
{
  int i;

  sprintf(  buf, "%03d", number );

  printf("\nNumber in Ascii: ");
  for( i=0; i< 3; i++)
     printf("%#04x ", *(buf+i));

  printf("\n");
  return;
}

Wenn z.B. der hex-Wert ist 0xff erzeugt die Funktion 0x32 0x35 0x35 was ist die Ascii-Darstellung von 255.

Nun möchte ich den Vorgang umkehren. Ich möchte eine Funktion, die übergeben werden können, werden drei bytes (array, 3), die zum generieren der hex-Wert.

d.h. Wir übergeben 0x32 0x35 0x34 und es erzeugt 0xFE.

Können Sie mir bitte helfen mit diesem? Es ist für ein eingebettetes system, die Werte werden nicht eingegeben sind Sie erhalten aus einer comms Puffer.

Vielen Dank.

EDIT:

Schrieb ich dies und es scheint zu funktionieren..

unsigned char ascii_to_hex(unsigned char* buf)
{
   unsigned char hundred, ten, unit, value;

   hundred = (*buf-0x30)*100;
   ten = (*(buf + 1)-0x30)*10;
   unit = *(buf+2)-0x30;     

   value = (hundred + ten + unit);
   printf("\nValue: %#04x \n", value);

   return value; 
}

Dank an alle für die Antworten.

  • Können Sie überprüfen, Konvertieren in ASCII-Zeichenkette aus hex-String in C und dies, SO Frage
  • number ist nicht eine "hex-Wert", es ist ein char, also eine Ganzzahl. Es ist egal, ob Sie anrufen hex_to_ascii(buffer, 0xFF), hex_to_ascii(buffer, 255) oder hex_to_ascii(buffer, 0377) - Sie sind alle gleich. Der umgekehrte Vorgang ist scanf.
InformationsquelleAutor user3065932 | 2013-12-05
Schreibe einen Kommentar