次のようにメモリを割り当てるとします。
Create(int width, int height, int depth)
{
size_t numBits = width * height * depth;
size_t numBytes = numBits / 8 + numBits % 8 != 0 ? 1 : 0;
bytes = malloc(numBytes);
...
次に、指定された x、y、b のバイト オフセットを取得します。
DoSomething(int x, int y, int bit)
{
Byte* byte = bytes + ... some offset ...
たとえば、私が言っCreate(3, 3, 3)
たDoSomething(0, 1, 1)
場合、バイト オフセットは 0 としてDoSomething(0, 2, 2)
計算されます。それが 9 番目のビットになると言った場合、オフセットは 1 として計算されます。
Byte を取得したら、必要な操作を実行できます。