base64 程序(哪位高手能把每条代码的意思说下)

来源:百度知道 编辑:UC知道 时间:2024/06/18 06:10:16
encode_base64(uint8_t *buffer, uint8_t *data, uint16_t len)
{
uint8_t *bp = buffer;
uint8_t *p = data;
uint8_t c1, c2;
while (p < data + len) {
c1 = *p++;
*bp++ = Base64Code[(c1 >> 2)];
c1 = (c1 & 0x03) << 4;
if (p >= data + len) {
*bp++ = Base64Code[c1];
break;
}
c2 = *p++;
c1 |= (c2 >> 4) & 0x0f;
*bp++ = Base64Code[c1];
c1 = (c2 & 0x0f) << 2;
if (p >= data + len) {
*bp++ = Base64Code[c1];
break;
}
c2 = *p++;
c1 |= (c2 >> 6) & 0x03;
*bp++ = Base64Code[c1];
*bp++ = Base64Code[c2 & 0x3f];
}
*bp = '\0';
}

就是每次取出6位, 查表得到转换结果。 Base64Code就是转换方式的列表

其实只要你对base64的规则了解之后这个代码就很容易读了

随机取数么不就是,这还用别人帮你读啊