Base64 encode data: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added icon downloading version) |
(Added Wren) |
||
Line 1,837: | Line 1,837: | ||
Result of string comparison of input and decoded output: 0. |
Result of string comparison of input and decoded output: 0. |
||
A zero indicates both strings are equal.</pre> |
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}}== |
=={{header|zkl}}== |