Base64 encode data: Difference between revisions

Added solution for Action!
m (→‎{{header|Phix}}: added syntax colouring, marked first part p2js compatible and second part not)
(Added solution for Action!)
Line 39:
...
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>
 
Anonymous user