--- a/Base64Coder.st Tue Aug 22 20:35:21 2017 +0200
+++ b/Base64Coder.st Sat Aug 26 12:41:32 2017 +0200
@@ -76,25 +76,6 @@
[exEnd]
[exBegin]
- 0 to:16 do:[:l |
- |coder decoder data encoding decoded|
-
- data := (0 to:l) asByteArray copyTo:l.
- coder := Base64Coder on:'' writeStream.
- coder nextPutAll:data.
- coder flush.
-
- encoding := coder contents.
-
- decoder := Base64Coder on:encoding readStream.
- decoded := decoder upToEnd.
- Transcript showCR:(data printString).
- Transcript show:' -> '; showCR:encoding.
- Transcript show:' ---> '; showCR:(decoded printString).
- self assert:(data = decoded).
- ].
- [exEnd]
- [exBegin]
|data1 text data2|
data1 := #[0 1 16r7F 16r80 16r81 16rFE 16rFF].
@@ -164,7 +145,11 @@
nextPutByte:aByte
"encode aByte on the output stream"
- |b1 b2 b3 b4|
+ |b1 "{ Class: SmallInteger }"
+ b2 "{ Class: SmallInteger }"
+ b3 "{ Class: SmallInteger }"
+ b4 "{ Class: SmallInteger }"
+ bufferedBytes "{ Class: SmallInteger }" |
buffer := (buffer bitShift:8) bitOr:aByte.
bits := bits + 8.
@@ -174,12 +159,14 @@
stream cr.
charCount := 0.
].
-
- b4 := buffer bitAnd:16r3F.
- b3 := (buffer bitShift:-6) bitAnd:16r3F.
- b2 := (buffer bitShift:-12) bitAnd:16r3F.
- b1 := (buffer bitShift:-18) bitAnd:16r3F.
+ bufferedBytes := buffer.
+
+ b4 := bufferedBytes bitAnd:16r3F.
+ b3 := (bufferedBytes bitShift:-6) bitAnd:16r3F.
+ b2 := (bufferedBytes bitShift:-12) bitAnd:16r3F.
+ b1 := (bufferedBytes bitShift:-18) bitAnd:16r3F.
buffer := bits := 0.
+
stream nextPut:(Base64Mapping at:b1+1);
nextPut:(Base64Mapping at:b2+1);
nextPut:(Base64Mapping at:b3+1);
@@ -187,6 +174,8 @@
charCount := charCount + 4.
].
+
+ "Modified: / 26-08-2017 / 12:35:17 / cg"
! !
!Base64Coder methodsFor:'misc'!