2013-06-28 8 views
0

Je veux obtenir la valeur de unsigned int unsigned char *, ma logique donne une valeur erronéeconvertir entier non signé à unsigned char *

unsigned int Address = 0x0a5b0644; // this value is getting ss fun parameter 
m_Address  = (unsigned char*)Address; // this logic wrote in side C++ file 

unsigned char * m_Address; // this is declared inside H file 

Ici m_Address est pas de valeur gettting 0x0a5b0644

Puis-je obtenir une idée pour le faire

+1

Quelle valeur _is_ il recevoir? – Chowlett

+0

Mmmmh, cela pourrait-il être un cas où ['reinterpret_cast <>'] (http://en.cppreference.com/w/cpp/language/reinterpret_cast) aiderait? – JBL

+0

Je reçois de la valeur indésirable 0xFFFF80 – Sijith

Répondre

2

La conversion d'un type entier en pointeur sera définie par l'implémentation.

Si vous avez réellement besoin d'un type entier non signé pour stocker des pointeurs, utilisez uintptr_t (ou intptr_t pour le type entier signé) dans <cstdint>. Ils sont introduits dans C++ 11 en tant que caractéristique facultative. Ils sont capables de convertir au type void * et de reconvertir.

+0

@Griwes: Ils sont. Voir le § 7.20.1.4 de C11 (même chose dans C99). – md5

+0

@Griwes Voir http://www.cplusplus.com/reference/cstdint/ –

0

vous pouvez essayer le suivi en supposant unsigned int est de 4 octets, {0x0a, 0x5b, 0x06, 0x44}

unsigned char bytes[11];// the number of charactoer in the string + a null terminating 
sprintf(bytes, "%#04x", Address); //<here it will print it 
Questions connexes