#!/usr/bin/env python from sys import argv class CenzicPOV: asciitable = { 'A' : [0x01,0xEE,0xEE,0xEE,0x01], 'B' : [0x81,0x66,0x66,0x66,0x00], 'C' : [0x7E,0x7E,0x7E,0x7E,0x81], 'D' : [0x81,0x7E,0x7E,0x7E,0x00], 'E' : [0x66,0x66,0x66,0x66,0x00], 'F' : [0xFE,0xF2,0xF2,0xF2,0x00], 'G' : [0x1E,0x5E,0x7E,0x7E,0x81], 'H' : [0x00,0xE7,0xE7,0xE7,0x00], 'I' : [0x7E,0x7E,0x00,0x7E,0x7E], 'J' : [0xFE,0xFE,0x80,0x7E,0x9E], 'K' : [0x7E,0xBD,0xDB,0xE7,0x00], 'L' : [0x7F,0x7F,0x7F,0x7F,0x00], 'M' : [0x00,0xFD,0xE3,0xFD,0x00], 'N' : [0x00,0x9F,0xE7,0xF9,0x00], 'O' : [0x81,0x7E,0x7E,0x7E,0x81], 'P' : [0xF9,0xE6,0xE6,0xE6,0x00], 'Q' : [0x01,0x9E,0xBE,0xBE,0xC1], 'R' : [0x79,0xA6,0xC6,0xE6,0x01], 'S' : [0x9E,0x66,0x66,0x66,0x79], 'T' : [0xFE,0xFE,0x00,0xFE,0xFE], 'U' : [0x80,0x7F,0x7F,0x7F,0x80], 'V' : [0xF8,0xC7,0x3F,0xC7,0xF8], 'W' : [0x00,0xBF,0xCF,0xBF,0x00], 'X' : [0x7E,0x99,0xE7,0x99,0x7E], 'Y' : [0xFE,0xF9,0x07,0xF9,0xFE], 'Z' : [0x7C,0x7A,0x66,0x5E,0x3E], ' ' : [0xFF,0xFF,0xFF,0xFF,0xFF], '&' : [0xBD,0x7F,0x6F,0x7F,0xBD] #Ampersand displays a smiley face } def ascii2bin(self,string_array): blob = chr(len(string_array)) for string in string_array: blob += chr(len(string)) blob += self.string2bin(string) return blob def string2bin(self,string): strblob = "" for char in string.upper()[::-1]: if self.asciitable.has_key(char): for byte in self.asciitable[char]: strblob += chr(byte) else: raise Exception, "Invalid character: '%s'" % byte return strblob if __name__ == "__main__": print CenzicPOV().ascii2bin(argv[1:])