Ich möchte das Äquivalent von% p-Tag in printf erstellen und den hexadezimalen Wert eines Zeigers schreiben. Aber ich wollte wissen, was die 0x
und die 4 ersten Zeichen bedeuten? Weil, wenn ich es von dezimal zu hexadezimal übersetze, ich nur die letzten 8 Zeichen habe. Also, was sind die drei Teile, die einen Zeiger bilden?Wie ist ein Zeiger in C zusammengesetzt?
Ich meine: Wenn ich versuche, einen Zeiger in Hexadezimal (mit meiner eigenen Funktion) zu konvertieren, bekomme ich 8 Zeichen.
Wenn ich das% p-Flag des printf verwenden, erhalte ich eine Rückkehr, die wie folgt aussieht: [0x] [7FFD] [die letzten 8 Zeichen ich] (ohne die [])
Hier mein Conversion-Code (Es wird nur für hexa, Binär- und oktal arbeiten):
char *convert_to_base(int nb, char *base_str)
{
char *result;
int i;
int has_begin;
int base;
int diviser;
base = my_strlen(base_str);
result = malloc(sizeof(char) * 12);
diviser = (base >= 10) ? my_power_rec(base, 7) : my_power_rec(base, 10);
has_begin = 0;
i = 0;
while (diviser != 0)
{
if (!has_begin)
has_begin = (base_str[nb/diviser] != '0') ? 1 : 0;
if (has_begin)
{
result[i] = base_str[nb/diviser];
nb = nb % diviser;
i += 1;
}
diviser /= base;
}
result[i] = '\0';
return (result);
}
verwende ich openSUSE
verwenden Ich bin nicht sehr klar..können Sie umschreiben? –
'0x' ist ein Präfix .. aber die ersten 4 Zeichen? Sie sind tatsächlich Ziffern ... –
Ja, aber Ziffern in Hexadezimal, die Zeichen verwendet – Orionss