2014-07-14 2 views
0

Je voudrais convertir un uint32 en une chaîne char à des fins d'impression. Mon uint32 est une adresse qui ressemble à quelque chose comme « 0x00402B00 »Convertir l'adresse uint32 en tableau char

Je me fous de ce qui précède « 0x », mais il n'a pas d'importance si elle est là-dedans.

Comment puis-je transformer ce numéro dans une chaîne char où:

string[0] = 0 
string[1] = 0 
string[2] = 4 
string[3] = 0 
string[4] = 2 

.... et ainsi de suite.

Will quelque chose comme ce travail ?:

uint32 address = 0x00402b00; 
char string[8]; 

sprintf(string, '%u', address); 

Toutes les idées?

Répondre

1

Trois choses:

  1. Le tableau char a besoin d'avoir la place pour un NUL final, il devrait y avoir au moins 9 éléments (et non 8).
  2. L'argument de chaîne de format sprintf doit être un littéral de chaîne entre guillemets doubles (pas un littéral de caractère entre guillemets simples).
  3. Une chaîne de format de %08x assurera un résultat hexadécimal hexadécimal à zéro à 8 chiffres (%u est un nombre décimal non capitonné).

Le code doit être:

uint32 address = 0x00402b00; 
char string[9]; 
sprintf(string, "%08x", address); 
0

Utilisation du spécificateur de conversion "x" de printf (ou sprintf) devrait faire l'affaire.

Vous pouvez omettre la partie "0x" si vous ne voulez pas la partie 0x.

code:

#include <cstdio> 

int main() { 
    unsigned int address = 0xDEADBEEF; 

    printf("Lowercase: 0x%x\n", address); 
    printf("Uppercase: 0x%X\n", address); 

    return 0; 
} 

Sortie:

g++ -O2 -Wall -pedantic -pthread test.cpp && ./a.out

Lowercase: 0xdeadbeef 
Uppercase: 0xDEADBEEF