!B64_TABLE=『ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=』 ●BASE64エンコードB(Sを)  結果とは文字列;ARYとは配列  Iで1から(Sのバイト数)まで繰り返す   ASC(MIDB(S,I,1))をARYに配列追加  MDとは整数=ARYの配列要素数%3  もし、MD!=0ならば(3-MD)回(0をARYに配列追加)//"="の代わりに"A"を付加  Iとは整数;TMPとは整数  (I<(ARYの配列要素数-1))の間   TMP=(ARY[I]<<16)||(ARY[I+1]<<08)||(ARY[I+2]<<00)   結果にMIDB(B64_TABLE,((TMP>>18&&$3F)+1),1)を追加   結果にMIDB(B64_TABLE,((TMP>>12&&$3F)+1),1)を追加   結果にMIDB(B64_TABLE,((TMP>>06&&$3F)+1),1)を追加   結果にMIDB(B64_TABLE,((TMP>>00&&$3F)+1),1)を追加   I=I+3  もし、MD!=0ならば//付加した"A"を"="に置換   MD=3-MD   結果=LEFTB(結果,(結果のバイト数-MD))   MD回(結果に「=」を追加)  結果で戻る ●BASE64デコードB(Sを)  S=Sの「=」を空に置換  MDとは整数=Sのバイト数%4  Iとは整数;Jとは整数  TMPとは整数;DATとは配列  MD回(Sに"A"を追加)// "="を"A"に置換  (I<(Sのバイト数))の間   TMP=(B64_TABLEの0からMIDB(S,I+1,1)をバイト検索<<18),    ||(B64_TABLEの0からMIDB(S,I+2,1)をバイト検索<<12),    ||(B64_TABLEの0からMIDB(S,I+3,1)をバイト検索<<06),    ||(B64_TABLEの0からMIDB(S,I+4,1)をバイト検索<<00)   DAT[J+0]=(TMP>>16)   DAT[J+1]=(TMP>>08)&&$FF   DAT[J+2]=(TMP>>00)&&$FF   I=I+4;J=J+3  結果とは文字列  DATで反復(CHR(対象)を結果に追加)  結果=LEFTB(結果,結果のバイト数-MD)//付加した"A"を排除  結果で戻る ●BASE64デコードC(Sを)  結果とは文字列  Pとは数値=-8;Aとは数値  Cとは数値;Dとは数値  Iで1から(Sのバイト数+1)まで繰り返す   C=(SのIから1バイト抜き出す)をB64_TABLEの0からバイト検索   もし、C<0ならば続ける   A=(A<<6)||(C&&63)   Pに6を直接足す   もし、P>=0ならば    D=(A>>P)&&255    もし、C!=64ならば     結果にCHR(D)を追加    A=A&&63    Pから8を直接引く  結果で戻る 「こんにちは」をBASE64エンコードB それを表示 それをBASE64デコードB それを表示