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 - [email protected]
http://mail.python.org/mailman/listinfo/tutor