#include <iostream>
#include <string>
using namespace std;
#include <string.h>

void convstrbits( int argc, char *argv[] ) {
	string s;
	for( int i = 2; i < argc; ++i ) {
		int len = strlen( argv[i] );
		for( int j = 0; j < len; ++j ) {
			char c = argv[i][j];
			for( int k = 7; k >= 0; --k ) {
				if( c & ( 1 << k ) ) {
					s += '1';
				} else {
					s += '0';
				}
			}
			s += ' ';
		}
	}
	cout << "String: " << s << endl;
}
void convbitstr( int argc, char *argv[] ) {
	string s;
	for( int i = 2; i < argc; ++i ) {
		int len = strlen( argv[i] );
		char c = 0;
		for( int j = 0; j < len; ++j ) {
			c *= 2;
			c |= argv[i][j] - '0';
		}
		s += c;
	}
	cout << "String: " << s << endl;
}


int usage(char *name){
	cerr <<"Usage: " 
		 << name
		 << " [--b2s | --s2b] [bitstring | string]" 
		 << endl;
	return -1;
}


int main( int argc, char *argv[] ) 
{
	if( argc > 2 ) {
		int len = strlen( argv[1] );
		len = ( len <= 3 ) ? len : 3;
		if( strncmp("--b2s", argv[1], len ) == 0 ) {
			convbitstr( argc, argv );
		} else if( strncmp("--s2b", argv[1], len ) == 0 ) {
			convstrbits( argc, argv );
		} else {
			usage(argv[0]);
		}
	} else {
		return usage(argv[0]);
	}
}

