如果遇到一个百分号则将后面的两个字符使用十六进制进行转换为一个字符,否则直接取值.下面是大概的原理
char a[100];
char temp[3];
unsigned char b[100];
int i,j;
strcpy(a, "abc%C3%BD%20");
temp[2]=0;
for(i = 0,j = 0 ; i < len; i ++, j++)
{
if(a[i] == '%')
{
temp[0] = a[i + 1];
temp[1] = a[i + 2];
/* 没有考虑实际中为'%'的情况 */
b[j] = strtol(temp,NULL,16);
i += 2;
}
else
{
b[j] = a[i];
}
}
|