Création d'un octet à partir de valeurs booléennes et vice versa
Problème :
Vous en avez huit Variables booléennes et désir de les fusionner en un seul octet. À l'inverse, votre objectif est de décoder un octet en huit valeurs booléennes distinctes. 🎜>
Cool Way :Attribuer à un membre du syndicat et lire à un autre. Notez que l'ordre des bits dans Bits est défini par l'implémentation.
Attention :
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; }
L'utilisation des unions de cette manière est bien définie dans ISO C99 et prise en charge par certains C compilateurs, mais il s'agit d'un comportement non défini en ISO C . Utilisez memcpy ou std::bit_cast pour le type-punning portable en C 20.
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!