[pypy-svn] r10045 - pypy/dist/pypy/lib

jacob at codespeak.net jacob at codespeak.net
Tue Mar 22 01:30:22 CET 2005


Author: jacob
Date: Tue Mar 22 01:30:22 2005
New Revision: 10045

Modified:
   pypy/dist/pypy/lib/binascii.py
Log:
Bug fix to a2b_base64.

Modified: pypy/dist/pypy/lib/binascii.py
==============================================================================
--- pypy/dist/pypy/lib/binascii.py	(original)
+++ pypy/dist/pypy/lib/binascii.py	Tue Mar 22 01:30:22 2005
@@ -139,7 +139,7 @@
     result = [
         chr(A << 2 | ((B >> 4) & 0x3)) + 
         chr((B & 0xF) << 4 | ((C >> 2 ) & 0xF)) + 
-        chr((C & 0xF) << 6 | D )
+        chr((C & 0x3) << 6 | D )
         for A, B, C, D in a]
     final = s[-4:]
     if final[2] == '=':
@@ -159,7 +159,7 @@
         D = table_a2b_base64[final[3]]
         snippet =  chr(A << 2 | ((B >> 4) & 0x3)) + \
                   chr((B & 0xF) << 4 | ((C >> 2 ) & 0xF)) + \
-                  chr((C & 0xF) << 6 | D )
+                  chr((C & 0x3) << 6 | D )
 
     return ''.join(result) + snippet
     
@@ -170,7 +170,7 @@
     length = len(s)
     final_length = length % 3
     
-    a = triples(s[: -final_length])
+    a = triples(s[ :length - final_length])
 
     result = [''.join(
         [table_b2a_base64[( A >> 2                    ) & 0x3F],
@@ -179,10 +179,10 @@
          table_b2a_base64[( C                         ) & 0x3F]])
               for A, B, C in a]
 
-    final = s[-final_length:]
-    if len(final) == 0:
+    final = s[length - final_length:]
+    if final_length == 0:
         snippet = ''
-    elif len(final) == 1:
+    elif final_length == 1:
         a = ord(final[0])
         snippet = table_b2a_base64[(a >> 2 ) & 0x3F] + \
                   table_b2a_base64[(a << 4 ) & 0x3F] + '=='
@@ -190,7 +190,7 @@
         a = ord(final[0])
         b = ord(final[1])
         snippet = table_b2a_base64[(a >> 2) & 0x3F] + \
-                  table_b2a_base64[(a << 4) | ((b >> 4) & 0xF) & 0x3F] + \
+                  table_b2a_base64[((a << 4) | (b >> 4) & 0xF) & 0x3F] + \
                   table_b2a_base64[(b << 2) & 0x3F] + '='
     return ''.join(result) + snippet + '\n'
 



More information about the Pypy-commit mailing list