Base64 decode data: Difference between revisions

Content added Content deleted
(added RPL)
(Add ed example)
Line 745: Line 745:
<pre>
<pre>
base64=VG8gZXJyIGlzIGh1bWFuLCBidXQgdG8gcmVhbGx5IGZvdWwgdGhpbmdzIHVwIHlvdSBuZWVkIGEgY29tcHV0ZXIuCiAgICAtLSBQYXVsIFIuIEVocmxpY2g=, bytes=0x546F206572722069732068756D616E2C2062757420746F207265616C6C7920666F756C207468696E677320757020796F75206E656564206120636F6D70757465722E0A202020202D2D205061756C20522E204568726C696368
base64=VG8gZXJyIGlzIGh1bWFuLCBidXQgdG8gcmVhbGx5IGZvdWwgdGhpbmdzIHVwIHlvdSBuZWVkIGEgY29tcHV0ZXIuCiAgICAtLSBQYXVsIFIuIEVocmxpY2g=, bytes=0x546F206572722069732068756D616E2C2062757420746F207265616C6C7920666F756C207468696E677320757020796F75206E656564206120636F6D70757465722E0A202020202D2D205061756C20522E204568726C696368
</pre>

=={{header|Ed}}==

This solution essentially hardcodes both Base64 chars and the byte->ASCII transformation, because [[Ed]] has no way to transform things other than text substitution. Still, the implementation is less than 200 lines long, which is a pretty compact script.

<syntaxhighlight>
H
,p
g/.*/s/\B/ /g
g/\b=\b/s// 000000 /g
g/\bA\b/s// 000000 /g
g/\bB\b/s// 000001 /g
g/\bC\b/s// 000010 /g
g/\bD\b/s// 000011 /g
g/\bE\b/s// 000100 /g
g/\bF\b/s// 000101 /g
g/\bG\b/s// 000110 /g
g/\bH\b/s// 000111 /g
g/\bI\b/s// 001000 /g
g/\bJ\b/s// 001001 /g
g/\bK\b/s// 001010 /g
g/\bL\b/s// 001011 /g
g/\bM\b/s// 001100 /g
g/\bN\b/s// 001101 /g
g/\bO\b/s// 001110 /g
g/\bP\b/s// 001111 /g
g/\bQ\b/s// 010000 /g
g/\bR\b/s// 010001 /g
g/\bS\b/s// 010010 /g
g/\bT\b/s// 010011 /g
g/\bU\b/s// 010100 /g
g/\bV\b/s// 010101 /g
g/\bW\b/s// 010110 /g
g/\bX\b/s// 010111 /g
g/\bY\b/s// 011000 /g
g/\bZ\b/s// 011001 /g
g/\ba\b/s// 011010 /g
g/\bb\b/s// 011011 /g
g/\bc\b/s// 011100 /g
g/\bd\b/s// 011101 /g
g/\be\b/s// 011110 /g
g/\bf\b/s// 011111 /g
g/\bg\b/s// 100000 /g
g/\bh\b/s// 100001 /g
g/\bi\b/s// 100010 /g
g/\bj\b/s// 100011 /g
g/\bk\b/s// 100100 /g
g/\bl\b/s// 100101 /g
g/\bm\b/s// 100110 /g
g/\bn\b/s// 100111 /g
g/\bo\b/s// 101000 /g
g/\bp\b/s// 101001 /g
g/\bq\b/s// 101010 /g
g/\br\b/s// 101011 /g
g/\bs\b/s// 101100 /g
g/\bt\b/s// 101101 /g
g/\bu\b/s// 101110 /g
g/\bv\b/s// 101111 /g
g/\bw\b/s// 110000 /g
g/\bx\b/s// 110001 /g
g/\by\b/s// 110010 /g
g/\bz\b/s// 110011 /g
g/\b0\b/s// 110100 /g
g/\b1\b/s// 110101 /g
g/\b2\b/s// 110110 /g
g/\b3\b/s// 110111 /g
g/\b4\b/s// 111000 /g
g/\b5\b/s// 111001 /g
g/\b6\b/s// 111010 /g
g/\b7\b/s// 111011 /g
g/\b8\b/s// 111100 /g
g/\b9\b/s// 111101 /g
g/\b=\b/s// 000000 /g
g/\b\+\b/s// 111110 /g
g/\b\/\b/s// 111111 /g
g/[[:space:]]/s///g
g/[01]{8}/s// & /g
g/00000000/s///g
g/00001010/s//\
/g
g/00100000/s// /g
g/00100001/s//!/g
g/00100010/s//"/g
g/00100011/s//#/g
g/00100100/s//$/g
g/00100101/s//%/g
g/00100110/s//&/g
g/00100111/s//'/g
g/00101000/s//(/g
g/00101001/s//)/g
g/00101010/s//*/g
g/00101011/s//+/g
g/00101100/s//,/g
g/00101101/s//-/g
g/00101110/s//./g
g/00101111/s////g
g/00110000/s//0/g
g/00110001/s//1/g
g/00110010/s//2/g
g/00110011/s//3/g
g/00110100/s//4/g
g/00110101/s//5/g
g/00110110/s//6/g
g/00110111/s//7/g
g/00111000/s//8/g
g/00111001/s//9/g
g/00111010/s//:/g
g/00111011/s//;/g
g/00111100/s//</g
g/00111101/s//=/g
g/00111110/s//>/g
g/00111111/s//?/g
g/01000000/s//@/g
g/01000001/s//A/g
g/01000010/s//B/g
g/01000011/s//C/g
g/01000100/s//D/g
g/01000101/s//E/g
g/01000110/s//F/g
g/01000111/s//G/g
g/01001000/s//H/g
g/01001001/s//I/g
g/01001010/s//J/g
g/01001011/s//K/g
g/01001100/s//L/g
g/01001101/s//M/g
g/01001110/s//N/g
g/01001111/s//O/g
g/01010000/s//P/g
g/01010001/s//Q/g
g/01010010/s//R/g
g/01010011/s//S/g
g/01010100/s//T/g
g/01010101/s//U/g
g/01010110/s//V/g
g/01010111/s//W/g
g/01011000/s//X/g
g/01011001/s//Y/g
g/01011010/s//Z/g
g/01011011/s//[/g
g/01011100/s//\/g
g/01011101/s//]/g
g/01011110/s//^/g
g/01011111/s//_/g
g/01100000/s//`/g
g/01100001/s//a/g
g/01100010/s//b/g
g/01100011/s//c/g
g/01100100/s//d/g
g/01100101/s//e/g
g/01100110/s//f/g
g/01100111/s//g/g
g/01101000/s//h/g
g/01101001/s//i/g
g/01101010/s//j/g
g/01101011/s//k/g
g/01101100/s//l/g
g/01101101/s//m/g
g/01101110/s//n/g
g/01101111/s//o/g
g/01110000/s//p/g
g/01110001/s//q/g
g/01110010/s//r/g
g/01110011/s//s/g
g/01110100/s//t/g
g/01110101/s//u/g
g/01110110/s//v/g
g/01110111/s//w/g
g/01111000/s//x/g
g/01111001/s//y/g
g/01111010/s//z/g
g/01111011/s//{/g
g/01111100/s//|/g
g/01111101/s//}/g
g/01111110/s//~/g
g/[ ][ ](.)[ ][ ]/s//\1/g
,p
Q
</syntaxhighlight>

{{out}}

<pre>
cat base64-decode.ed | ed -E base64-decode.input
117
VG8gZXJyIGlzIGh1bWFuLCBidXQgdG8gcmVhbGx5IGZvdWwgdGhpbmdzIHVwIHlvdSBuZWVkIGEgY29tcHV0ZXIuCiAgICAtLVBhdWwgUi5FaHJsaWNo
To err is human, but to really foul things up you need a computer.
--Paul R.Ehrlich
</pre>
</pre>