bytes_to_b64
/*
** Usage:
** bytes_to_b64(str)
**
** Arguments:
** str a string of bytes, eight bits per character
**
** Returns:
** a string of base64 digits (RFC 3548), six bits per character
**
** GMLscripts.com
*/
{
var str,len,pad,tab,b64,i,bin;
str = argument0;
len = string_length(str);
pad = "=";
tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
b64 = "";
for (i=0;i<len;i+=3) {
bin[0] = ord(string_char_at(str,i+1));
bin[1] = ord(string_char_at(str,i+2));
bin[2] = ord(string_char_at(str,i+3));
b64 += string_char_at(tab,1+(bin[0]>>2));
b64 += string_char_at(tab,1+(((bin[0]&3)<<4)|(bin[1]>>4)));
if (i+1>=len) b64 += pad;
else b64 += string_char_at(tab,1+(((bin[1]&15)<<2)|(bin[2]>>6)));
if (i+2>=len) b64 += pad;
else b64 += string_char_at(tab,1+(bin[2]&63));
}
return b64;
}
** Usage:
** bytes_to_b64(str)
**
** Arguments:
** str a string of bytes, eight bits per character
**
** Returns:
** a string of base64 digits (RFC 3548), six bits per character
**
** GMLscripts.com
*/
{
var str,len,pad,tab,b64,i,bin;
str = argument0;
len = string_length(str);
pad = "=";
tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
b64 = "";
for (i=0;i<len;i+=3) {
bin[0] = ord(string_char_at(str,i+1));
bin[1] = ord(string_char_at(str,i+2));
bin[2] = ord(string_char_at(str,i+3));
b64 += string_char_at(tab,1+(bin[0]>>2));
b64 += string_char_at(tab,1+(((bin[0]&3)<<4)|(bin[1]>>4)));
if (i+1>=len) b64 += pad;
else b64 += string_char_at(tab,1+(((bin[1]&15)<<2)|(bin[2]>>6)));
if (i+2>=len) b64 += pad;
else b64 += string_char_at(tab,1+(bin[2]&63));
}
return b64;
}
[Please Login]
Projects: 1
Contributor: xot
comments powered by Disqus

Related: