Maison >développement back-end >C++ >Comment convertir efficacement entre un octet et huit valeurs booléennes ?

Comment convertir efficacement entre un octet et huit valeurs booléennes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 11:38:08472parcourir

How to Efficiently Convert Between a Byte and Eight Boolean Values?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn