- 论坛徽章:
- 0
|
char *recovery_data(char *s)
{
char *p = s, *e, *r, *_ret;
int len = strlen(s);
unsigned char i, unit[4];
e = s + len;
len = len / 4 * 3 + 1;
r = _ret = (char *)malloc(len);
while (p < e) {
memcpy(unit,p,4);
if (unit[3] == '=')
unit[3] = 0;
if (unit[2] == '=')
unit[2] = 0;
p += 4;
for (i=0; unit[0]!=B64[i] && i<64; i++);
unit[0] = i==64 ? 0 : i;
for (i=0; unit[1]!=B64[i] && i<64; i++);
unit[1] = i==64 ? 0 : i;
for (i=0; unit[2]!=B64[i] && i<64; i++);
unit[2] = i==64 ? 0 : i;
for (i=0; unit[3]!=B64[i] && i<64; i++);
unit[3] = i==64 ? 0 : i;
*r++ = (unit[0]<<2) | (unit[1]>>4);
*r++ = (unit[1]<<4) | (unit[2]>>2);
*r++ = (unit[2]<<6) | unit[3];
}
*r = 0;
#if RETURNMALLOC == 0
strcpy(s,_ret);
free(_ret);
_ret = s;
#endif //RETURNMALLOC
return _ret;
}
解码时遇到回车换行符就结束解码了,也就是只能解码第一行,我不太明白这个程序,问题出在哪里呢? |
|