mit printf() Inhalt eines void Zeigers ausgeben lassen

rohrbold

Mitglied
Hallo beisammen,

eine meiner Funktionen bekommt »von außerhalb« Daten geliefert, die sie als void* entgegennimmt. Ich rätsele jetzt, ob es eine Möglichkeit gibt, diese Daten als Hexwerte mittels printf auszugeben. Das Gerüst sieht ungefähr so aus:
Code:
static int func(void **ptr, void *data, u8 type, u8 len)
{ 
[...]
printf("type 0x%2.2x len %d data 0x%", type, len, data");
[...]
}

Was könnte man sinnvolles an die dritte Stelle setzen? Ich will nicht die Adresse und würde mich auch mit einer fest eingestellten Anzahl Bytes zur Ausgabe begnügen, also sagen wir mal die ersten vier Bytes.
Kennt sich da jemand mit aus?
 
Hi.

Code:
static int func(void **ptr, void *data, u8 type, u8 len)
{ 
  unsigned char* ucp = (unsigned char*)data;
  u8 i = 0;

  while (i++ < len) {
    printf ("%#.2x", (int)*ucp++);
  }
}

Gruß
 
Cool, so ähnlich hatte ich es gelöst, bevor ich Deine Antwort gefunden habe:
Code:
static int func(void **ptr, void *data, u8 type, u8 len)
{
        int i = 0;
        u8 *dbg_ptr = data;

        for (i = 0; i < len; ++i)
                printf("%02X ", dbg_ptr[i]);
        printf("\n");
[...]
}
 
Zurück