跨平台 C URL 编解码
来源:互联网 发布:2017淘宝搜索引擎算法 编辑:程序博客网 时间:2024/05/19 18:48
char dec2hexChar(short int n) {
if ( 0 <= n && n <= 9 ) {
return char( short('0') + n );
} else if ( 10 <= n && n <= 15 ) {
return char( short('A') + n - 10 );
} else {
return char(0);
}
}
short int hexChar2dec(char c) {
if ( '0'<=c && c<='9' ) {
return short(c-'0');
} else if ( 'a'<=c && c<='f' ) {
return ( short(c-'a') + 10 );
} else if ( 'A'<=c && c<='F' ) {
return ( short(c-'A') + 10 );
} else {
return -1;
}
}
string escapeURL(const string &URL)
{
string result = "";
for ( unsigned int i=0; i<URL.size(); i++ ) {
char c = URL[i];
if (
( '0'<=c && c<='9' ) ||
( 'a'<=c && c<='z' ) ||
( 'A'<=c && c<='Z' ) ||
c=='/' || c=='.'
) {
result += c;
} else {
int j = (short int)c;
if ( j < 0 ) {
j += 256;
}
int i1, i0;
i1 = j / 16;
i0 = j - i1*16;
result += '%';
result += dec2hexChar(i1);
result += dec2hexChar(i0);
}
}
return result;
}
std::string deescapeURL(const std::string &URL) {
string result = "";
for ( unsigned int i=0; i<URL.size(); i++ ) {
char c = URL[i];
if ( c != '%' ) {
result += c;
} else {
char c1 = URL[++i];
char c0 = URL[++i];
int num = 0;
num += hexChar2dec(c1) * 16 + hexChar2dec(c0);
result += char(num);
}
}
return result;
}
- 跨平台 C URL 编解码
- URL编解码C语言实现
- URL编解码函数
- URL编解码示例
- URL编解码
- URL 编解码
- C++编解码URL
- C++ URL编解码
- URL编解码
- URL编解码
- Url编解码
- URL编解码
- url的编解码
- url编解码
- iOS-URL编解码
- url编解码与base64编解码
- vb.net编解码url
- VC实现URL编解码
- ZBT, Zero-bus turnaround, 零总线周转期静态存储器
- 如何对memcache的数据(key-value)进行遍历操作
- mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
- 常见算法
- C#执行命令行命令
- 跨平台 C URL 编解码
- CGI(Perl)的漏洞及防范措施
- ORA-00096: invalid value for parameter plsql_compiler_flags, must be from among NON_DEBUG, DEBUG, INTERPRETED, NATIVE
- 今天参加了网易的笔试,题目不太好做???、高手来解答哦
- Java与数据库的结合,应用实例。以学生表、选课表为例。可以自己扩展功能。
- Blog Feeling
- POJ 2406 连续重复字符串(KMP)和后缀数组
- 中国三军军衔肩章大全
- NP难题