Le décodage et l'encodage des valeurs booléennes dans et hors des octets peuvent être réalisés par diverses méthodes. Cet article explorera deux approches :
Hard Way :
En utilisant une approche de manipulation directe des bits, les fonctions suivantes sont utilisées :
unsigned char ToByte(bool b[8]) { unsigned char c = 0; for (int i = 0; i < 8; ++i) { if (b[i]) { c |= 1 << i; } } return c; } void FromByte(unsigned char c, bool b[8]) { for (int i = 0; i < 8; ++i) { b[i] = (c & (1 << i)) != 0; } }
Dans cette méthode, chaque valeur booléenne est représentée par un bit, un octet (8 bits) pouvant contenir 8 valeurs booléennes. valeurs.
Cool Way :
Une approche alternative exploite les champs de bits au sein d'une structure et d'une union pour fournir une manipulation flexible des données :
struct Bits { unsigned b0 : 1, b1 : 1, b2 : 1, b3 : 1, b4 : 1, b5 : 1, b6 : 1, b7 : 1; }; union CBits { Bits bits; unsigned char byte; };
Ici , la structure Bits contient 8 valeurs booléennes sous forme de champs de bits. L'union CBits partage le même espace mémoire, permettant l'accès aux valeurs booléennes via le membre bits ou à la valeur octet via le membre byte.
Notes d'implémentation :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!