#pragma once #include namespace roro { inline std::string base64Encode(const std::string& in) { static const char* kAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; std::string out; size_t i = 0; while (i + 2 < in.size()) { uint32_t n = (static_cast(in[i]) << 16) | (static_cast(in[i + 1]) << 8) | static_cast(in[i + 2]); out += kAlphabet[n >> 18]; out += kAlphabet[(n >> 12) & 63]; out += kAlphabet[(n >> 6) & 63]; out += kAlphabet[n & 63]; i += 3; } size_t rest = in.size() - i; if (rest) { uint32_t n = static_cast(in[i]) << 16; if (rest == 2) n |= static_cast(in[i + 1]) << 8; out += kAlphabet[n >> 18]; out += kAlphabet[(n >> 12) & 63]; out += rest == 2 ? kAlphabet[(n >> 6) & 63] : '='; out += '='; } return out; } } // namespace roro