利用C语言进行urldecode,解决浏览器中的urlencode

来源:互联网 发布:各层网络协议 编辑:程序博客网 时间:2024/05/17 01:22

利用C语言进行urldecode,解决浏览器中的urlencode

#include <stdio.h>#include <stdlib.h>#include <string.h>int isDigit(unsigned char ch){if(ch>= '0' && ch <= '9'){return 1;}else{return 0;}}unsigned char  character_to_hex(unsigned char highByte, unsigned char lowByte){highByte = isDigit(highByte)? (highByte - '0'):(highByte - 'A' + 10);lowByte = isDigit(lowByte)? (lowByte - '0'):(lowByte - 'A' + 10);return ((highByte<<4) + lowByte);}unsigned char* urldecode(unsigned char* srcBuf, int srcLen, int *outLen){if(NULL == srcBuf || srcLen<= 0){return NULL;}unsigned char* dstBuf = NULL;dstBuf = (unsigned char *)malloc(srcLen);if(NULL == dstBuf){return NULL;}int i=0, j=0;for(i=0; i<srcLen; i++){if(srcBuf[i] == '%'){dstBuf[j] = character_to_hex(srcBuf[i+1], srcBuf[i+2]);i+=2;}else if(srcBuf[i] == '+'){dstBuf[j] = ' ';}else{dstBuf[j] = srcBuf[i];}j++;}*outLen = j;return dstBuf;}int main(int argc, char *argv[]){if(argc != 2){printf("few paramter...\n");printf("Usage: ./urldecode  szURL\n");return -1;}int size = 0;unsigned char* dst = urldecode(argv[1], strlen(argv[1]), &size);printf("%s\n", dst);return 0;}


0 0
原创粉丝点击