Pages : 1
#1 Le 04/07/2013, à 10:56
- kboo
C++ construction bit par bit
Bonjour
Je cherche un moyen de construire un tableau de type char* en concaténant des unsigned char des unsigned long etc... je ne sais pas trop comment m'y prendre car ayant du char comment concaténer d'autre type dedans en préservant la taille des éléments:
ça serai un truc du genre:
char* solution;
unsigned char element1 = 0xAA;
unsigned long element2 = 0xFFFFFFFFFFFFFFFF; //µP en 64bits
solution = element1 | element2; // solution = 0xAAFFFFFFFFFFFFFFFF
Je suppose qu'il faut faire une surcharge de l'opérateur | mais comment faire pour ne pas avoir de "trou" vu que les types sont différants
Je ne peux pas faire d'Union car c'est pas toujours les même type d'éléments ou nombre d'éléments.
Help!
merci d'avance!
Dernière modification par kboo (Le 04/07/2013, à 11:03)
Hors ligne
#2 Le 04/07/2013, à 11:24
- pingouinux
Re : C++ construction bit par bit
Bonjour,
Le pointeur solution doit être alloué. Tu peux ensuite utiliser memcpy pour copier les éléments un par un.
Ajouté :
Voici une façon de faire (assez rudimentaire) :
solution = (char*)malloc( sizeof(element1)+sizeof(element2) )
p = solution;
memcpy( p, &element1, sizeof(element1) ); p += sizeof(element1);
memcpy( p, &element2, sizeof(element2) ); p += sizeof(element2);
Dernière modification par pingouinux (Le 04/07/2013, à 12:48)
Hors ligne
#3 Le 04/07/2013, à 12:53
- kboo
Re : C++ construction bit par bit
Merci pingouinux,
ça me parait bien par contre y a t'il une méthode plus "C++" car c'est très orienté C (malloc)
merci encore
Hors ligne
#4 Le 04/07/2013, à 12:59
- pingouinux
Re : C++ construction bit par bit
Tu peux faire l'allocation comme tu veux. Je ne suis pas un spécialiste du C++.
Hors ligne
#5 Le 04/07/2013, à 15:17
- myrddin772
Re : C++ construction bit par bit
Une bonne piste se trouve là...
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows et Ian Parberry
Si tu ne sais pas : demande, si tu sais : partage !
Hors ligne
Pages : 1