in image/image.cpp [51:83]
std::string base64_encode(const std::vector<uint8_t>& input) {
std::string encoded;
encoded.reserve(((input.size() / 3) + (input.size() % 3 > 0)) * 4);
uint32_t temp;
std::vector<uint8_t>::const_iterator cursor = input.begin();
for (size_t idx = 0; idx < input.size() / 3; idx++) {
temp = (*cursor++) << 16; //Convert to big endian
temp += (*cursor++) << 8;
temp += (*cursor++);
encoded.append(1, encodeLookup[(temp & 0x00FC0000) >> 18]);
encoded.append(1, encodeLookup[(temp & 0x0003F000) >> 12]);
encoded.append(1, encodeLookup[(temp & 0x00000FC0) >> 6]);
encoded.append(1, encodeLookup[(temp & 0x0000003F)]);
}
switch (input.size() % 3) {
case 1:
temp = (*cursor++) << 16;
encoded.append(1, encodeLookup[(temp & 0x00FC0000) >> 18]);
encoded.append(1, encodeLookup[(temp & 0x0003F000) >> 12]);
encoded.append(2, padCharacter);
break;
case 2:
temp = (*cursor++) << 16;
temp += (*cursor++) << 8;
encoded.append(1, encodeLookup[(temp & 0x00FC0000) >> 18]);
encoded.append(1, encodeLookup[(temp & 0x0003F000) >> 12]);
encoded.append(1, encodeLookup[(temp & 0x00000FC0) >> 6]);
encoded.append(1, padCharacter);
break;
}
encoded = encoded;
return encoded;
}