5555BASE64_ALPHABET = BASE62_ALPHABET + "-_"
5656
5757
58- def convert (number , from_digits , to_digits , sign ):
59- if str (number )[0 ] == sign :
60- number = str (number )[1 :]
61- neg = 1
62- else :
63- neg = 0
64-
65- # make an integer out of the number
66- x = 0
67- for digit in str (number ):
68- x = x * len (from_digits ) + from_digits .index (digit )
69-
70- # create the result in base 'len(to_digits)'
71- if x == 0 :
72- res = to_digits [0 ]
73- else :
74- res = ""
75- while x > 0 :
76- digit = x % len (to_digits )
77- res = to_digits [digit ] + res
78- x = int (x // len (to_digits ))
79- return neg , res
8058class BaseConverter :
8159 decimal_digits = "0123456789"
8260
@@ -94,17 +72,39 @@ def __repr__(self):
9472 )
9573
9674 def encode (self , i ):
97- neg , value = convert (i , self .decimal_digits , self .digits , "-" )
75+ neg , value = self . convert (i , self .decimal_digits , self .digits , "-" )
9876 if neg :
9977 return self .sign + value
10078 return value
10179
10280 def decode (self , s ):
103- neg , value = convert (s , self .digits , self .decimal_digits , self .sign )
81+ neg , value = self . convert (s , self .digits , self .decimal_digits , self .sign )
10482 if neg :
10583 value = "-" + value
10684 return int (value )
10785
86+ def convert (self , number , from_digits , to_digits , sign ):
87+ if str (number )[0 ] == sign :
88+ number = str (number )[1 :]
89+ neg = 1
90+ else :
91+ neg = 0
92+
93+ # make an integer out of the number
94+ x = 0
95+ for digit in str (number ):
96+ x = x * len (from_digits ) + from_digits .index (digit )
97+
98+ # create the result in base 'len(to_digits)'
99+ if x == 0 :
100+ res = to_digits [0 ]
101+ else :
102+ res = ""
103+ while x > 0 :
104+ digit = x % len (to_digits )
105+ res = to_digits [digit ] + res
106+ x = int (x // len (to_digits ))
107+ return neg , res
108108
109109
110110base2 = BaseConverter (BASE2_ALPHABET )
0 commit comments