base64←{⎕IO ⎕ML←0 1 ⍝ Base64 encoding and decoding as used in MIME. chars←'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' bits←{,⍉(⍺⍴2)⊤⍵} ⍝ encode each element of ⍵ in ⍺ bits, ⍝ and catenate them all together part←{((⍴⍵)⍴⍺↑1)⊂⍵} ⍝ partition ⍵ into chunks of length ⍺ 0=2|⎕DR ⍵:2∘⊥∘(8∘↑)¨8 part{(-8|⍴⍵)↓⍵}6 bits{(⍵≠64)/⍵}chars⍳⍵ ⍝ decode a string into octets four←{ ⍝ use 4 characters to encode either 8=⍴⍵:'=='∇ ⍵,0 0 0 0 ⍝ 1, 16=⍴⍵:'='∇ ⍵,0 0 ⍝ 2 chars[2∘⊥¨6 part ⍵],⍺ ⍝ or 3 octets of input } cats←⊃∘(,/)∘((⊂'')∘,) ⍝ catenate zero or more strings cats''∘four¨24 part 8 bits ⍵ } code_colours test script Back to: notes Back to: Workspaces