# think geek pillow dull_0 = ( "010100000100100101" "001100010011000100" "111101010111010100" "000100100101001100" "010011000100111101" "010111010100000100" ) bright = ( "0101000001001001" "0100110001001100" "0100111101010111" ) dull_1 = ( "100101001100010011" "000100111101010111" ) shirt = ( "0100100100100000" "0111001101101000" "0110111101110000" "0110010101100100" "0010000001100001" "0111010000100000" "0101010001101000" "0110100101101110" "0110101101000111" "0110010101100101" "0110101100101110" "0110001101101111" "0110110100100000" "0110111101101110" "0010000001000001" "0111000001110010" "0110100101101100" "0010000001000110" "0110111101101111" "0110110000100111" "0111001100100000" "0110010001100001" "0111100100101100" "0010000001100001" "0110111001100100" "0010000001100001" "0110110001101100" "0010000001001001" "0010000001100111" "0110111101110100" "0010000001110111" "0110000101110011" "0010000001110100" "0110100001101001" "0111001100100000" "0110110001101111" "0111010101110011" "0111100100100000" "0101010000101101" "0111001101101000" "0110100101110010" "0111010000100001" ) def decode_nibble (s): n = 0 for ch in s: n <<= 1 c = {'0':0,'1':1}[ch] print 'c=',c n |= c return n def decode_bits (bits): result = [] for i in range (0, len (bits), 8): n0 = decode_nibble (bits[i:i+4]) n1 = decode_nibble (bits[i+4:i+8]) ch = (n0 << 4) | n1 result.append (chr(ch)) return ''.join (result) #print decode_bits (dull_0) #print decode_bits (bright) #print decode_bits (dull_1) print decode_bits (shirt)