sauvegarde sérialisée manuel de champs de bitfields
Bonjour, j'ai par exemple le champ de bits suivant:
unsigned int relativeDensity : 6;
unsigned int antiCubicDensity : 6;
int magnetActrprr : 20;
Je souhaite faire une sauvegarde sérialisé des deux derniers paramètres au bit près (je ne souhaite pas que antiCubicDensity prenne 32 bits dans la sauvegarde comme actuellement alors que 6 suffisent).
Mon code actuel pour sérialiser des primitives est le suivant:
Code:
1 2 3 4
| template < typename value_type >
inline void ecrireBinaire(ostream& out, const value_type& v) {
out.write((char*)&v, sizeof(v));
} |
si je fais un
Code:
1 2 3 4
| template < typename value_type, int size >
inline void ecrireBinaire(ostream& out, const value_type& v) {
out.write((char*)&v, size);
} |
est-ce logique ? Je n'ai pas essayé ...
Et pour la lecture, actuellement j'utilise
Code:
1 2 3 4 5
| template < typename type_val >
inline void lireBinaire(ifstream& in, type_val& v)
{
in.read((char*)&v, sizeof(v));
} |
puis-je faire:
Code:
1 2 3 4 5 6
|
template < typename type_val, int size >
inline void lireBinaire(ifstream& in, type_val& v)
{
in.read((char*)&v, size);
} |
Je doute de la pertinence de mes suggessions.
Cordialement,