- static const char* base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- //chsrc为源数据,chdes为Base64编码后的数据,len为数据长度
- void Base64_Code(unsigned char* chsrc, unsigned char* chdes, int len)
- {
- unsigned char char_array_3[3], char_array_4[4];
- int i = 0, j = 0;
- while(len--)
- {
- char_array_3[i++] = *(chsrc++);
- if(3 == i)
- {
- char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
- char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
- char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
- char_array_4[3] = char_array_3[2] & 0x3f;
- for(i = 0; i < 4; i++)
- *(chdes+i) = base64_chars[char_array_4[i]];
- i = 0;
- chdes += 4;
- }
- }
- if(i)
- {
- for(j = i; j < 3; j++)
- char_array_3[j] = '\0';
- char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
- char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
- char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
- char_array_4[3] = char_array_3[2] & 0x3f;
- for(j = 0; j < (i+1); j++)
- *(chdes++) = base64_chars[char_array_4[j]];
- while((3 > i++))
- *(chdes++) = '=';
- }
- *chdes = '\0';
- return;
- }
来源: http://www.phpxs.com/code/1004119/