diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-09-03 23:53:19 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-09-03 23:53:19 +0200 |
commit | 8223db0b1a660ad10830e9a5a2fe71858cf52481 (patch) | |
tree | 28b1659900a411318e567914a66c7695f1966dbc /modules/language/python/module/binascii.scm | |
parent | d75a196fe299e3661e23d6f216008ab49660edec (diff) |
bytes64 copmiles and testprogram works
Diffstat (limited to 'modules/language/python/module/binascii.scm')
-rw-r--r-- | modules/language/python/module/binascii.scm | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/modules/language/python/module/binascii.scm b/modules/language/python/module/binascii.scm index bda660e..ab3dd69 100644 --- a/modules/language/python/module/binascii.scm +++ b/modules/language/python/module/binascii.scm @@ -138,16 +138,19 @@ (bytes (list)) (let lp ((i 0) (r '())) (cond + ((>= i n) + (bytes (reverse r))) + ((or (= (get1 n i) 10) (= (get1 n i) 13)) (lp (+ i 1) r)) - ((< i n) + (else (let ((b1 (get1 n i)) (b2 (get1 n (+ i 1))) - (b3 (get1 n (+ i 2))) - (b4 (get1 n (+ i 3)))) + (b3 (get1 n (+ i 2))) + (b4 (get1 n (+ i 3)))) (let ((b1 (get2 b1)) - (b2 (get2 b1))) + (b2 (get2 b2))) (if (= x=x b4) (if (= x=x b3) (let* ((x (logior b1 (ash b2 6))) @@ -164,9 +167,8 @@ (ch1 (logand x #xff)) (ch2 (ash (logand x #xff00) -8)) (ch3 (ash (logand x #xff0000) -16))) - (lp (+ i 4) (cons* ch3 ch2 ch1 r))))))) - (else - (bytes (reverse (cons 10 r))))))))) + (lp (+ i 4) (cons* ch3 ch2 ch1 r)))))))))))) + (def (b2a_base64 data (= newline #t)) (define x=x (char->integer #\=)) @@ -182,7 +184,7 @@ (define (get2 i) (bytevector-u8-ref to64 i)) (cond - ((= i (- n 1)) + ((= i (- n 2)) (let* ((b1 (get i)) (b2 (get (+ i 1))) (x (logior b1 (ash b2 8))) @@ -192,7 +194,7 @@ (a4 x=x)) (lp (+ i 3) (cons* a4 a3 a2 a1 r)))) - ((= i (- n 2)) + ((= i (- n 1)) (let* ((x (get i)) (a1 (get2 (logand #x3f x))) (a2 (get2 (ash (logand #xfc0 x) -6))) |