convert a long string in binary

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • bussiere maillist

    #1

    convert a long string in binary

    i've got a very long string
    and i wanted to convert it in binary
    like

    string = """Monty Python, or The Pythons, is the collective name of
    the creators of Monty Python's Flying Circus, a British television
    comedy sketch show that first aired on the BBC on October 5, 1969. A
    total of 45 episodes were made over four series. However, the Python
    phenomenon was much greater, spawning stage tours, a musical, four
    films, numerous albums, and several books, as well as launching the
    members to individual stardom.

    The television series, broadcast by the BBC from 1969 to 1974, was
    conceived, written and performed by Graham Chapman, John Cleese
    (1969-1973), Terry Gilliam, Eric Idle, Terry Jones and Michael Palin.
    Loosely structured as a sketch show, but with a highly innovative
    stream-of-consciousness approach (aided by Terry Gilliam's
    animations), it pushed the boundaries of what was then considered
    acceptable, both in terms of style and content.
    """

    string = binary(string)
    print string
    // 01010101010101


    i 'am searching for something like the binary function (taht doesn't
    exist) to convert my string directly in binary.

    Regards
    Bussiere
  • bearophileHUGS@lycos.com

    #2
    Re: convert a long string in binary

    bussiere maillist:
    i've got a very long string
    and i wanted to convert it in binary
    Not much tested:

    _nibbles = {"0":"0000", "1":"0001", "2":"0010", "3":"0011",
    "4":"0100", "5":"0101", "6":"0110", "7":"0111",
    "8":"1000", "9":"1001", "A":"1010", "B":"1011",
    "C":"1100", "D":"1101", "E":"1110", "F":"1111"}

    def toBase2(number) :
    if number < 16:
    return "0000" + _nibbles["%X" % number]
    else:
    d1, d2 = "%X" % number
    return _nibbles[d1] + _nibbles[d2]

    convbin = dict((chr(i), toBase2(i)) for i in xrange(256))

    def binary(s):
    return "".join(con vbin[c] for c in s)

    print binary("testing string")

    Surely there are ways to make it shorter (But it's fast enough).

    Bye,
    bearophile

    Comment

    • mensanator@aol.com

      #3
      Re: convert a long string in binary


      bussiere maillist wrote:
      i've got a very long string
      and i wanted to convert it in binary
      like
      >
      string = """Monty Python, or The Pythons, is the collective name of
      the creators of Monty Python's Flying Circus, a British television
      comedy sketch show that first aired on the BBC on October 5, 1969. A
      total of 45 episodes were made over four series. However, the Python
      phenomenon was much greater, spawning stage tours, a musical, four
      films, numerous albums, and several books, as well as launching the
      members to individual stardom.
      >
      The television series, broadcast by the BBC from 1969 to 1974, was
      conceived, written and performed by Graham Chapman, John Cleese
      (1969-1973), Terry Gilliam, Eric Idle, Terry Jones and Michael Palin.
      Loosely structured as a sketch show, but with a highly innovative
      stream-of-consciousness approach (aided by Terry Gilliam's
      animations), it pushed the boundaries of what was then considered
      acceptable, both in terms of style and content.
      """
      >
      string = binary(string)
      print string
      // 01010101010101
      >
      >
      i 'am searching for something like the binary function (taht doesn't
      exist) to convert my string directly in binary.
      The gmpy module can convert numbers to binary strings:

      import gmpy

      s = """
      Yes, well, of course that's just the sort of
      blinkered philistine pig ignorance I've come
      to expect from you non-creative garbage.
      """

      ss = ''
      for c in s:
      sb = gmpy.digits(ord (c),2) #convert to binary string
      sb = '0'*(8-len(sb)) + sb #add leading 0's
      ss += sb

      print ss



      000010100101100 101100101011100 110010110000100 000011101110110 010101101100011 011000010110000 100000011011110 110011000100000 011000110110111 101110101011100 100111001101100 101001000000111 010001101000011 000010111010000 100111011100110 010000001101010 011101010111001 101110100001000 000111010001101 000011001010010 000001110011011 011110111001001 110100001000000 110111101100110 000010100110001 001101100011010 010110111001101 011011001010111 001001100101011 001000010000001 110000011010000 110100101101100 011010010111001 101110100011010 010110111001100 101001000000111 000001101001011 001110010000001 101001011001110 110111001101111 011100100110000 101101110011000 110110010100100 000010010010010 011101110110011 001010010000001 100011011011110 110110101100101 000010100111010 001101111001000 000110010101111 000011100000110 010101100011011 101000010000001 100110011100100 110111101101101 001000000111100 101101111011101 010010000001101 110011011110110 111000101101011 000110111001001 100101011000010 111010001101001 011101100110010 100100000011001 110110000101110 010011000100110 000101100111011 001010010111000 001010



      Regards
      Bussiere

      Comment

      • Maric Michaud

        #4
        Re: convert a long string in binary

        Le dimanche 20 août 2006 13:55, bearophileHUGS@ lycos.com a écrit :
        bussiere maillist:
        i've got a very long string
        and i wanted to convert it in binary
        >
        Not much tested:
        >
        _nibbles = {"0":"0000", "1":"0001", "2":"0010", "3":"0011",
        "4":"0100", "5":"0101", "6":"0110", "7":"0111",
        "8":"1000", "9":"1001", "A":"1010", "B":"1011",
        "C":"1100", "D":"1101", "E":"1110", "F":"1111"}
        >
        def toBase2(number) :
        if number < 16:
        return "0000" + _nibbles["%X" % number]
        else:
        d1, d2 = "%X" % number
        return _nibbles[d1] + _nibbles[d2]
        >
        convbin = dict((chr(i), toBase2(i)) for i in xrange(256))
        >
        def binary(s):
        return "".join(con vbin[c] for c in s)
        >
        print binary("testing string")
        >
        Surely there are ways to make it shorter (But it's fast enough).
        >
        Maybe this one is more elegant :

        In [305]: trans = {}

        In [306]: for i in range(256) :
        .....: trans[chr(i)] = ''.join(i & 2**j and '1' or '0'
        .....: for j in reversed(range( 8)))
        .....:

        In [307]: trans['a']
        Out[307]: '01100001'

        In [308]: trans['\xee']
        Out[308]: '11101110'

        In [309]: print ''.join(trans[e] for e in 'test string')
        011101000110010 101110011011101 000010000001110 011011101000111 001001101001011 0111001100111

        Bye,
        bearophile
        --
        _____________

        Maric Michaud
        _____________

        Aristote - www.aristote.info
        3 place des tapis
        69004 Lyon
        Tel: +33 426 880 097

        Comment

        Working...