- note -

C言語

2/8

7行プログラミング - 2 : base64エンコーダ/デコーダ   - Last modified:2012/8/20

#include <stdio.h>
int i,j,z=64,w,s;char*b=(char*)&w,m[65]="=/+";main(int c,char**v){for(;i<62;)m[
z-i++]=65+i+i/26*6-i/52*81;if(c<2||*v[1]-45||v[1][1]-100||v[1][2]){for(;;++j>18
?puts(b),j=0:0){for(i=2;~i&&~(c=getchar());b[i--]=c);if(i>1)return 0;for(c=3;w
<<=6,~c;)putchar(c-->i?m[z-(b[3]&63)]:61);}}else{for(;;){for(s=w=0,i=4;~--i;w+=
j?(z-j)<<i*6:0){for(;;){c=getchar();if(!~c)return 0;for(j=-1;j<z;)if(m[++j]==c)
goto _;}_:s+=!j;}for(i=2;i>=s;)putchar(b[i--]);}}}
標準入出力でbase64エンコード/デコード。
-dを指定するとデコード。 多分。
Windowsだとテキストモードの関係によりリダイレクトでバイナリファイルを渡せない。
LinuxならOK。 多分。