Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """url.py by Nick Ku"""
- def number_to_character( number ):
- #Note: <10: 0-9, 10-35: A-Z, 36-61: a-z, 62: -, 63: +, reject out of range
- if number < 10:
- return chr( number + 48)
- elif 10 <= number <= 35:
- return chr( number + 55 )
- elif 35 < number <= 61:
- return chr( number + 61 )
- elif number == 62:
- return chr( 45 )
- elif number == 63:
- return chr( 43 )
- else:
- print ('Invalid number')
- def character_to_number( character ):
- #Note: Inverse function. Transform letter to its order then subtract.
- number = ord( character )
- if 48 <= number <= 57:
- return number-48
- elif 65 <= number <= 90:
- return number - 55
- elif 97 <= number <= 122:
- return number - 61
- elif number == 45:
- return 62
- elif number == 43:
- return 63
- else:
- print ('Invalid character')
- def encode( number ):
- #converts number into 6 characters, must convert into base 64 first
- new_number = ""
- if number < 0:
- print ('Negative numbers are invalid')
- while number !=0:
- remainder = number % 64
- new_number += number_to_character(remainder)
- number //= 64
- while len(new_number) < 6:
- new_number += '0'
- new_number = new_number[:6]
- return new_number
- def decode( number ):
- #inverse of encode
- result = 0
- exponent = 0
- for item in number:
- result += character_to_number(item) * (64**exponent)
- exponent += 1
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement