47 const unsigned char *current = string;
49 auto *result = (
unsigned char *)malloc(((length + 3 - length % 3) * 4 / 3 + 1) *
sizeof(char));
53 result[i++] = base64_table[current[0] >> 2];
54 result[i++] = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)];
55 result[i++] = base64_table[((current[1] & 0x0f) << 2) + (current[2] >> 6)];
56 result[i++] = base64_table[current[2] & 0x3f];
65 result[i++] = base64_table[current[0] >> 2];
68 result[i++] = base64_table[((current[0] & 0x03) << 4) + (current[1] >> 4)];
69 result[i++] = base64_table[(current[1] & 0x0f) << 2];
70 result[i++] = base64_pad;
74 result[i++] = base64_table[(current[0] & 0x03) << 4];
75 result[i++] = base64_pad;
76 result[i++] = base64_pad;