Advertisement
Cinestra

Nick Ku- URL

Oct 9th, 2013
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. """url.py by Nick Ku"""
  2.  
  3. def number_to_character( number ):
  4. #Note: <10: 0-9, 10-35: A-Z, 36-61: a-z, 62: -, 63: +, reject out of range
  5.     if number < 10:
  6.         return chr( number + 48)
  7.     elif 10 <= number <= 35:
  8.         return chr( number + 55 )
  9.     elif 35 < number <= 61:
  10.         return chr( number + 61 )
  11.     elif number == 62:
  12.         return chr( 45 )
  13.     elif number == 63:
  14.         return chr( 43 )
  15.     else:
  16.         print ('Invalid number')
  17.  
  18. def character_to_number( character ):
  19. #Note: Inverse function. Transform letter to its order then subtract.
  20.     number = ord( character )
  21.     if 48 <= number <= 57:
  22.         return number-48
  23.     elif 65 <= number <= 90:
  24.         return number - 55
  25.     elif 97 <= number <= 122:
  26.         return number - 61
  27.     elif number == 45:
  28.         return 62
  29.     elif number == 43:
  30.         return 63
  31.     else:
  32.         print ('Invalid character')
  33.  
  34. def encode( number ):
  35. #converts number into 6 characters, must convert into base 64 first
  36.     new_number = ""
  37.     if number < 0:
  38.         print ('Negative numbers are invalid')
  39.     while number !=0:
  40.         remainder = number % 64
  41.         new_number += number_to_character(remainder)
  42.         number //= 64
  43.     while len(new_number) < 6:
  44.         new_number += '0'
  45.     new_number = new_number[:6]
  46.     return new_number
  47.  
  48. def decode( number ):
  49. #inverse of encode
  50.     result = 0
  51.     exponent = 0
  52.     for item in number:
  53.         result += character_to_number(item) * (64**exponent)
  54.         exponent += 1
  55.     return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement