Namespace std.base64 Private Const CHAR_EQUALS:=61 Const encode:=New Int[]( 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100,101,102, 103,104,105,106,107,108,109,110, 111,112,113,114,115,116,117,118, 119,120,121,122,48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 ) Public #rem monkeydoc Encode binary data to base64 text. #end Function EncodeBase64:String( data:UByte Ptr,length:Int ) Local buf:=New Stack,tmp:=New UByte[3],i:=0,j:=0 While i,tmp:=New Int[4],i:=0,j:=0 While i=decode.Length Or decode[c]=-1 Exit tmp[j]=decode[c] ; i+=1 ; j+=1 If j=4 buf.Add( tmp[0] Shl 2 | (tmp[1] & $30) Shr 4 ) buf.Add( (tmp[1] & $0f) Shl 4 | (tmp[2] & $3c) Shr 2) buf.Add( (tmp[2] & $03) Shl 6 | tmp[3] ) j=0 Endif Wend If j If j=1 Print "Base64 decode error" If j>1 buf.Add( tmp[0] Shl 2 | (tmp[1] & $30) Shr 4) If j>2 buf.Add( (tmp[1] & $0f) Shl 4 | (tmp[2] & $3c) Shr 2) Endif Local data:=New DataBuffer( buf.Length ) libc.memcpy( data.Data,buf.Data.Data,buf.Length) Return data End