부울 값을 바이트 내부 및 외부로 디코딩 및 인코딩하는 것은 다양한 방법을 통해 수행할 수 있습니다. 이 기사에서는 두 가지 접근 방식을 살펴보겠습니다.
하드 웨이:
직접 비트 조작 접근 방식을 활용하여 다음 기능이 사용됩니다.
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; } }
이 방법에서 각 부울 값은 비트로 표시되며, 바이트(8비트)는 8개의 부울을 보유할 수 있습니다. 값.
쿨한 방법:
대체 접근 방식은 구조 및 공용체 내의 비트 필드를 활용하여 유연한 데이터 조작을 제공합니다.
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; };
여기 , Bits 구조는 8개의 부울 값을 비트 필드로 보유합니다. CBits 공용체는 동일한 메모리 공간을 공유하므로 비트 멤버를 통해 부울 값에 액세스하거나 바이트 멤버를 통해 바이트 값에 액세스할 수 있습니다.
구현 참고 사항:
위 내용은 부울 값을 어떻게 효율적으로 바이트로 인코딩하고 디코딩할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!