David Perlman wrote: > d'oh, I fell for the "reply-all" trick. :) > > Here's the code in question: > > Apparently there are built in functions hex() and oct() to generate > hexadecimal and octal digit strings of numbers, but there's no > corresponding bin(). Kind of a bizarre oversight, if you ask me. > > Searching on the internet, I found this: > > def bin(integer, returnType=str): > bin = > {'0':'000','1':'001','2':'010','3':'011','4':'100','5':'101','6':'110',' > 7':'111'} > if returnType == int: > return int(''.join([bin[i] for i in oct(integer)])) > elif returnType == long: > return long(''.join([bin[i] for i in oct(integer)]),10) > else: > return (''.join([bin[i] for i in oct(integer)])).lstrip("0") > > Just define this in the program you are writing and use bin as you > would use oct or hex, making sure to specify int or long as the return > type if you don't want a str. Here's a similar function, converting characters to their ascii values as strings of 0 & 1. Perhaps some parts of this might be useful to optimize the above.
def str_to_binary(s, bin=('0000','0001','0010','0011','0100','0101', '0110','0111','1000','1001','1010','1011','1100', '1101','1110','1111')): return " ".join( [bin[x]+bin[y] for x,y in [divmod(ord(c),16) for c in s]]) Note that by making bin a parameter it gets created one time when the def is executed. And indexing a list is faster than keying a dict. -- Bob Gailer 510-978-4454 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor