#include #include using namespace std; ofstream outfile; unsigned char mask; unsigned char ch; void putBits (char str[]) { int i = 0; while (str[i] != '\0') { if (str[i] == '1') ch = ch | mask; mask = mask >> 1; //cout << i << ": " << str[i] << " {" << hex << (int)ch << "}"; //cout << "<" << hex << (int)mask << ">" << endl; if (mask == 0) { outfile.put (ch); mask = 128; ch = 0; } i++; } } void padToEndOfByte (char str[]) { int i = 0; while (str[i] != '\0') { if (str[i] == '1') ch = (ch | mask); mask = mask >> 1; //cout << "Padding " << i << ": " << str[i] << " {" << hex << (int)ch << "}"; //cout << "<" << hex << (int)mask << ">" << endl; if (mask == 0) { outfile.put (ch); mask = 128; ch = 0; return; } i++; } } int main(int argc, char *argv[]) { char bit; int i; if (argc < 2) { cout << "Usage: " << argv[0] << " filename " << endl; exit(1); } cout << argv[0] << ": opening file " << argv[1] << endl; outfile.open (argv[1]); mask = 128; ch = 0; putBits ("0110110"); putBits ("110"); putBits ("1111110110110"); putBits ("0110110"); putBits ("001110"); padToEndOfByte ("111111111111111111"); outfile.close(); }