Base64 encode data: Difference between revisions

Added Wren
m (→‎{{header|Phix}}: added icon downloading version)
(Added Wren)
Line 1,837:
Result of string comparison of input and decoded output: 0.
A zero indicates both strings are equal.</pre>
 
=={{header|Wren}}==
{{libheader|Wren-fmt}}
{{libheader|Wren-seq}}
From first principles using string manipulation. Quick enough here.
<lang ecmascript>import "io" for File, Stdout
import "/fmt" for Conv, Fmt
import "/seq" for Lst
 
var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 
var encode = Fn.new { |s|
var c = s.count
if (c == 0) return s
var e = ""
for (b in s) e = e + Fmt.swrite("$08b", b)
if (c == 2) {
e = e + "00"
} else if (c == 1) {
e = e + "0000"
}
var i = 0
while (i < e.count) {
var ix = Conv.atoi(e[i..i+5], 2)
System.write(alpha[ix])
i = i + 6
}
if (c == 2) {
System.write("=")
} else if (c == 1) {
System.write("==")
}
Stdout.flush()
}
 
var s = File.read("favicon.ico").bytes.toList
for (chunk in Lst.chunks(s, 3)) encode.call(chunk)
System.print()</lang>
 
{{out}}
<pre>
AAABAAIAEBAAAAAAAABoBQAAJgAAACAgAAAAAAAAqAgAAI4FAAAoAAAAEAAAACAAAAABAAgAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wCGiYcARkhHAL/CwAAmKScAam1rAOPm5ACgo6EAV1pYABcZ
....
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAE=
</pre>
 
=={{header|zkl}}==
9,476

edits