Base64编码是一种将二进制数据转换为ASCII字符串格式的方法,使用特定的64个字符集。其编码过程如下:
-
输入数据:将二进制数据作为输入。
-
分组:将输入数据按3字节(24位)一组进行分组。
-
拆分:每组24位数据被拆分成四个6位的组。
-
映射:每个6位组映射到Base64字母表中的一个字符,该字母表包含64个字符(A-Z, a-z, 0-9, +, /)。
-
填充:如果输入数据的字节数不是3的倍数,则在最终编码输出中添加填充字符(
=),使其长度成为4的倍数。
代码:
#include <iostream>
#include <string>
//base64字符表
static const std::string base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
//编码
std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len)
{
std::string ret;
int i = 0;
int j = 0;
unsigned char char_array_3[3];
unsigned char char_array_4[4];
while (in_len--) {
char_array_3[i++] = *(bytes_to_encode++);//每次取出三个bytes
if (i == 3) {
/*取第一个byte的高六位*/
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
/*取第一个byte的底二位*/ /*取第二个byte的高四位*/
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
/*取第二个byte的底二位*/ /*取第三个byte的高四位*/
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + (<

最低0.47元/天 解锁文章
6053

被折叠的 条评论
为什么被折叠?



