20static bbyte dtable[256];
29 for (i = 0; i < 26; i++) {
31 dtable[26 + i] =
'a' + i;
33 for (i = 0; i < 10; i++) {
34 dtable[52 + i] =
'0' + i;
39 string::const_iterator s_i = s_in.begin();
40 while (s_i != s_in.end()) {
42 bbyte igroup[3], ogroup[4];
45 igroup[0] = igroup[1] = igroup[2] = 0;
46 for (n = 0; n < 3 && s_i != s_in.end(); n++) {
48 igroup[n] = (
bbyte) c;
51 ogroup[0] = dtable[igroup[0] >> 2];
52 ogroup[1] = dtable[((igroup[0] & 3) << 4) | (igroup[1] >> 4)];
53 ogroup[2] = dtable[((igroup[1] & 0xF) << 2) | (igroup[2] >> 6)];
54 ogroup[3] = dtable[igroup[2] & 0x3F];
67 for (i = 0; i < 4; i++)
80 for (i = 0; i < 255; i++) {
83 for (i =
'A'; i <=
'Z'; i++) {
84 dtable[i] = 0 + (i -
'A');
86 for (i =
'a'; i <=
'z'; i++) {
87 dtable[i] = 26 + (i -
'a');
89 for (i =
'0'; i <=
'9'; i++) {
90 dtable[i] = 52 + (i -
'0');
92 dtable[(int)
'+'] = 62;
93 dtable[(int)
'/'] = 63;
94 dtable[(int)
'='] = 0;
97 string::const_iterator s_i = s_in.begin();
98 while (s_i != s_in.end()) {
99 bbyte a[4], b[4], o[3];
101 for (i = 0; i < 4 && s_i != s_in.end(); i++) {
103 if (dtable[c] & 0x80)
return result;
105 b[i] = (
bbyte) dtable[c];
108 o[0] = (b[0] << 2) | (b[1] >> 4);
109 o[1] = (b[1] << 4) | (b[2] >> 2);
110 o[2] = (b[2] << 6) | b[3];
112 i = a[2] ==
'=' ? 1 : (a[3] ==
'=' ? 2 : 3);
114 for (
int j = 0; j < i; ++j)
Declaration of base64 Utilities.
std::string base64decode(const std::string &s_in)
std::string base64encode(const std::string &s_in)