Base64 encode data: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring, marked first part p2js compatible and second part not) |
(Added solution for Action!) |
||
Line 39: | Line 39: | ||
... |
... |
||
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAE= |
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAE= |
||
</pre> |
|||
=={{header|Action!}}== |
|||
{{libheader|Action! Tool Kit}} |
|||
<lang Action!>INCLUDE "D2:IO.ACT" ;from the Action! Tool Kit |
|||
PROC Encode(BYTE ARRAY buf BYTE len CHAR ARRAY res) |
|||
CHAR ARRAY chars(65)="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" |
|||
BYTE b |
|||
res(0)=4 |
|||
b=buf(0) RSH 2 |
|||
res(1)=chars(b+1) |
|||
b=(buf(0)&$03) LSH 4 |
|||
b==%buf(1) RSH 4 |
|||
res(2)=chars(b+1) |
|||
IF len<2 THEN |
|||
res(3)='= |
|||
ELSE |
|||
b=(buf(1)&$0F) LSH 2 |
|||
b==%buf(2) RSH 6 |
|||
res(3)=chars(b+1) |
|||
FI |
|||
IF len<3 THEN |
|||
res(4)='= |
|||
ELSE |
|||
b=buf(2)&$3F |
|||
res(4)=chars(b+1) |
|||
FI |
|||
RETURN |
|||
PROC EncodeFile(CHAR ARRAY fname) |
|||
DEFINE BUFLEN="3" |
|||
BYTE dev=[1],len |
|||
BYTE ARRAY buf(BUFLEN) |
|||
CHAR ARRAY res(5) |
|||
Close(dev) |
|||
Open(dev,fname,4) |
|||
DO |
|||
buf(1)=0 buf(2)=0 |
|||
len=Bget(dev,buf,BUFLEN) |
|||
IF len=0 THEN EXIT FI |
|||
Encode(buf,len,res) |
|||
Print(res) |
|||
OD |
|||
Close(dev) |
|||
RETURN |
|||
PROC Main() |
|||
EncodeFile("H1:FAVICON.ICO") |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Base64_encode_data.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
AAABAAIAEBAAAAAAAABoBQAAJgAAACAgAAAAAAAAqAgAAI4FAAAoAAAAEAAAACAAAAABAAgAAAAA |
|||
... |
|||
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAE= |
|||
</pre> |
</pre> |
||