2323class D64 ( object ):
2424 def __init__ ( self , special_chars ):
2525 super ( D64 , self ).__init__ ( )
26- self . chars = bytearray ( sorted (
27- 'PYFGCRLAOEUIDHTNSQJKXBMWVZpyfgcrlaoeuidhtnsqjkxbmwvz1234567890' + special_chars ) )
28- self .codeToIndex = bytearray ( 128 )
26+ alphabet = 'PYFGCRLAOEUIDHTNSQJKXBMWVZpyfgcrlaoeuidhtnsqjkxbmwvz1234567890'
27+ self . alphabet = bytearray ( sorted ( alphabet + special_chars ) )
28+ self .lookup = bytearray ( 255 )
2929 for i in xrange ( 64 ):
30- code = self .chars [ i ]
31- self .codeToIndex [ code ] = i
30+ code = self .alphabet [ i ]
31+ self .lookup [ code ] = i
3232
3333 def encode ( self , data ):
3434 """
@@ -48,32 +48,32 @@ def encode( self, data ):
4848 s = bytearray ( (l * 4 + 2 ) / 3 )
4949 hang = 0
5050 j = 0
51- chars = self .chars
51+ a = self .alphabet
5252 for i in xrange ( l ):
5353 v = ord ( data [ i ] )
5454 r = i % 3
5555 if r == 0 :
56- s [ j ] = chars [ v >> 2 ]
56+ s [ j ] = a [ v >> 2 ]
5757 j += 1
5858 hang = (v & 3 ) << 4
5959 elif r == 1 :
60- s [ j ] = chars [ hang | v >> 4 ]
60+ s [ j ] = a [ hang | v >> 4 ]
6161 j += 1
6262 hang = (v & 0xf ) << 2
6363 elif r == 2 :
64- s [ j ] = chars [ hang | v >> 6 ]
64+ s [ j ] = a [ hang | v >> 6 ]
6565 j += 1
66- s [ j ] = chars [ v & 0x3f ]
66+ s [ j ] = a [ v & 0x3f ]
6767 j += 1
6868 hang = 0
6969 else :
7070 assert False
7171 if l % 3 :
72- s [ j ] = chars [ hang ]
72+ s [ j ] = a [ hang ]
7373
7474 return str ( s )
7575
76- def decode ( self , s ):
76+ def decode ( self , e ):
7777 """
7878 >>> decode = standard.decode
7979 >>> decode('')
@@ -87,14 +87,14 @@ def decode( self, s ):
8787 >>> decode('..31.kF40VR')
8888 '\\ x00\\ x01\\ x02\\ x03\\ x04\\ x05\\ x06\\ x07'
8989 """
90- l = len ( s )
90+ n = len ( e )
9191 j = 0
92- b = bytearray ( l * 3 / 4 )
92+ b = bytearray ( n * 3 / 4 )
9393 hang = 0
94- codeToIndex = self .codeToIndex
94+ l = self .lookup
9595
96- for i in xrange ( l ):
97- v = codeToIndex [ ord ( s [ i ] ) ]
96+ for i in xrange ( n ):
97+ v = l [ ord ( e [ i ] ) ]
9898 r = i % 4
9999 if r == 0 :
100100 hang = v << 2
0 commit comments