[Tutor] convert ascii to binary
eryksun
eryksun at gmail.com
Wed Sep 12 14:36:01 CEST 2012
On Wed, Sep 12, 2012 at 7:20 AM, Aaron Pilgrim <aaronpil at gmail.com> wrote:
> Hello,
> I am trying to write a small program that converts ascii to binary.
>
> I tried using the python reference library section 18.8 but had
> trouble understanding how to make it work.
>
> Here is the code I am currently trying to use:
>
> def main():
> import binascii
> myWord = input("Enter the word to convert..")
> #convert text to ascii
> for ch in myWord:
> print(ord(ch))
> #convert ascii to binary
> binascii.a2b_uu(ord(ch))
I'm not sure what you want, based on the code above. uuencoding is
meant for sending data through 7-bit channels like email and
newsgroups. For example:
>>> binascii.b2a_uu('\x81\x82') # 8-bit binary to 7-bit ascii
'"@8( \n'
>>> binascii.a2b_uu('"@8( \n') # 7-bit ascii back to 8-bit
'\x81\x82'
http://docs.python.org/py3k/library/binascii.html#binascii.a2b_uu
Do you instead want an ASCII bitstring (i.e. 1s and 0s)?
These will raise a UnicodeError if the string isn't ASCII.
# Python 3
def iter_bin(s):
sb = s.encode('ascii')
return (format(b, '07b') for b in sb)
# Python 2
def iter_bin(s):
sb = s.encode('ascii')
return (format(ord(b), '07b') for b in sb)
For example:
>>> for s in iter_bin("Spam"):
... print(s)
...
1010011
1110000
1100001
1101101
>>> print(*iter_bin("Spam"), sep='') # Python 3
1010011111000011000011101101
>>> print ''.join(s for s in iter_bin("Spam")) # Python 2
1010011111000011000011101101
More information about the Tutor
mailing list