Menyahkod dan mengekod nilai boolean masuk dan keluar daripada bait boleh dicapai melalui pelbagai kaedah. Artikel ini akan meneroka dua pendekatan:
Cara Sukar:
Menggunakan pendekatan manipulasi bit terus, fungsi berikut digunakan:
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; } }
Dalam kaedah ini, setiap nilai boolean diwakili oleh bit, dengan bait (8 bit) boleh menyimpan 8 boolean nilai.
Cara Cool:
Pendekatan alternatif memanfaatkan medan bit dalam struktur dan kesatuan untuk menyediakan manipulasi data yang fleksibel:
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; };
Di sini , struktur Bits memegang 8 nilai boolean sebagai medan bit. Kesatuan CBits berkongsi ruang memori yang sama, membenarkan akses kepada nilai boolean melalui ahli bit atau nilai bait melalui ahli bait.
Nota Pelaksanaan:
Atas ialah kandungan terperinci Bagaimanakah Nilai Boolean Boleh Dikodkan dan Dinyahkodkan dengan Cekap kepada Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!