Bonjour à tous !
Je récupère dans mes projets du code en C qui permet d'accéder directement aux données contenues en mémoire. Typiquement il s'agit par exemple d'un tableau d'unsigned char qui est casté en unsigned int. C'est pas très clair, ça le sera peut être plus avec un exemple :
Après l'exécution de ce code, val contient 0x00000020, car on accède directement aux données en mémoire et donc on est tributaire de "l'endianess" de la machine (d'après ce que j'ai cru comprendre ) La raison principale d'utilisation de ce type de code étant sa vitesse, vu que contenu de val n'a pas besoin d'être byteswappé (dans le cas où on a besoin de récupérer la donnée sous cette forme, bien entendu...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 uint8_t tab[4] = {0x20,0x00,0x00,0x00}; uint32_t val = *(uint32_t *)&tab;
Donc ma question est, existe-t-il un moyen de faire la même chose en C++ ? J'ai testé les casts dispo (static_cast, reinterpret_cast, etc. ) mais je n'ai pas réussi à avoir un code compilable
Merci de votre attention
Partager