C++ base64_encode function
#include <iostream> #include <sstream> using std::cout; using std::endl; std::string base64_encode(const std::string &s); int main(int argc, char *argv[]) { cout << base64_encode("a") << endl; //YQ== cout << base64_encode("ab") << endl; //YWI= cout << base64_encode("abc") << endl; //YWJj cout << base64_encode("abcd") << endl; //YWJjZA== cout << base64_encode("abcde") << endl; //YWJjZGU= cout << base64_encode("abcdef") << endl; //YWJjZGVm return 0; } std::string base64_encode(const std::string &s) { static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; size_t i=0,ix=0,leng = s.length(); std::stringstream q; for(i=0,ix=leng - leng%3; i<ix; i+=3) { q<< base64_chars[ (s[i] & 0xfc) >> 2 ]; q<< base64_chars[ ((s[i] & 0x03) << 4) + ((s[i+1] & 0xf0) >> 4) ]; q<< base64_chars[ ((s[i+1] & 0x0f) << 2) + ((s[i+2] & 0xc0) >> 6) ]; q<< base64_chars[ s[i+2] & 0x3f ]; } if (ix<leng) { q<< base64_chars[ (s[ix] & 0xfc) >> 2 ]; q<< base64_chars[ ((s[ix] & 0x03) << 4) + (ix+1<leng ? (s[ix+1] & 0xf0) >> 4 : 0)]; q<< (ix+1<leng ? base64_chars[ ((s[ix+1] & 0x0f) << 2) ] : '='); q<< '='; } return q.str(); }
code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)