Я думаю, что это будет работать в (непроверенном) Java:
enum A{B.values()}
enum B{A.values()}
Должен переполниться в статической инициализации, прежде чем это даже получит шанс перестать работать из-за отсутствия основных (Строка []).
Собирайте биты, пока не получите достаточно битов, чтобы заполнить байт и затем записать его ..
Например, что-то вроде этого:
int current_bit = 0;
unsigned char bit_buffer;
FILE *f;
void WriteBit (int bit)
{
if (bit)
bit_buffer |= (1<<current_bit);
current_bit++;
if (current_bit == 8)
{
fwrite (&bit_buffer, 1, 1, f);
current_bit = 0;
bit_buffer = 0;
}
}
Как только вы закончите писать свои биты, вы должны очистить битовый буфер. Для этого просто записывайте биты, пока current_bit не станет равным нулю:
void Flush_Bits (void)
{
while (current_bit)
WriteBit (0);
}