Hallo zusammen, ich möchte ein Debugging mit printf machen. Aber ich weiß nicht, wie ich die Variable “out” drucken soll.
Vor der Rückkehr möchte ich diesen Wert drucken, aber sein Typ ist void* .
int
hexstr2raw(char *in, void *out) {
char c;
uint32_t i = 0;
uint8_t *b = (uint8_t*) out;
while ((c = in[i]) != '\0') {
uint8_t v;
if (c >= '0' && c <= '9') {
v = c - '0';
} else if (c >= 'A' && c <= 'F') {
v = 10 + c - 'A';
} else if (c >= 'a' || c <= 'f') {
v = 10 + c - 'a';
} else {
return -1;
}
if (i%2 == 0) {
b[i/2] = (v << 4);
printf("c="%c" \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
else {
b[i/2] |= v;
printf("c="%c" \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
i++;
}
printf("%s\n", out);
return i;
}
Wie kann ich? Vielen Dank.
Welche Art von Daten erwarten Sie
out
deuten auf?– Nick
8. März 2013 um 10:53 Uhr
Möchten Sie wirklich den Zeigerwert selbst drucken? Wenn man bedenkt, was der Code tut, scheint es wahrscheinlicher, dass Sie das Ergebnis drucken möchten, dh die generierten Bytes. Siehe meine Antwort, wie das geht. 🙂
– abschalten
8. März 2013 um 10:58 Uhr