Welcome, guest | Sign In | My Account | Store | Cart
'''Module for string conversion.

This module provides two functions that allow
strings to be encoded and decoded in base 255.'''

################################################################################

__version__ = '$Revision: 0 $'
__date__ = 'February 11, 2007'
__author__ = 'Stephen "Zero" Chappell <my.bios@gmail.com>'
__credits__ = '''\
S. Schaub, for introducing me to programming.
B. Brown, for teaching me some math courses.
E. Skogen, for listening to my ideas.'''

################################################################################

import sys as _sys

################################################################################

def encode(string, divide=1024):
    'Encode a string to base 255.'
    def encode(s):
        i = 0
        for c in s:
            i *= 257
            i += ord(c) + 1
        s = ''
        while i:
            s = chr(i % 254 + 2) + s
            i /= 254
        return s
    return '\1'.join(encode(string[index:index+divide]) for index in xrange(0, len(string), divide))

def decode(string):
    'Decode a string from base 255.'
    def decode(s):
        i = 0
        for c in s:
            i *= 254
            i += ord(c) - 2
        s = ''
        while i:
            s = chr(i % 257 - 1) + s
            i /= 257
        return s
    return ''.join(decode(string) for string in string.split('\1'))

################################################################################

if __name__ == '__main__':
    _sys.stdout.write('Content-Type: text/plain\n\n')
    _sys.stdout.write(file(_sys.argv[0]).read())

History