coded ← ##.base64 plain ⍝ Base64 encoding and decoding as used in MIME.
plain ← ##.base64 coded
From Jay Foad, this function en/decodes between plain numbers and base64 encod-
ing as used by MIME format.
References:
http://en.wikipedia.org/wiki/Base64
http://tools.ietf.org/html/rfc2045
Examples:
base64 0 1 2 3 4 253 254 255 ⍝ encode some octets
AAECAwT9/v8=
base64 'AAECAwT9/v8='
0 1 2 3 4 253 254 255
base64 ⎕ucs 'If I were only dafter' ⍝ encode some ASCII text
SWYgSSB3ZXJlIG9ubHkgZGFmdGVy
⎕ucs base64 'SWYgSSB3ZXJlIG9ubHkgZGFmdGVy'
If I were only dafter
base64 'UTF-8' ⎕ucs '+/⍵÷⍴⍵' ⍝ encode some UTF-8 text
Ky/ijbXDt+KNtOKNtQ==
'UTF-8' ⎕ucs base64 'Ky/ijbXDt+KNtOKNtQ=='
+/⍵÷⍴⍵
80 wrap Hobbes ⍝ Example from Wikipedia article.
Man is distinguished, not only by his reason, but by this singular passion from
other animals, which is a lust of the mind, that by a perseverance of delight in
the continued and indefatigable generation of knowledge, exceeds the short
vehemence of any carnal pleasure.
80 wrap base64 ⎕ucs Hobbes
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNp
bmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1p
bmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBp
bmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhl
bWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
tails ← (0 to ¯4) ↓¨ ⊂¯20↑Hobbes
↑ tails
any carnal pleasure.
any carnal pleasure
any carnal pleasur
any carnal pleasu
any carnal pleas
↑base64∘⎕ucs¨tails
YW55IGNhcm5hbCBwbGVhc3VyZS4=
YW55IGNhcm5hbCBwbGVhc3VyZQ==
YW55IGNhcm5hbCBwbGVhc3Vy
YW55IGNhcm5hbCBwbGVhc3U=
YW55IGNhcm5hbCBwbGVhcw==
See also: hex Data_compression
Back to: contents
Back to: Workspaces