打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跨平台C++ URL编码解码 函数

跨平台C++ URL编码解码 函数

(2005-05-26 11:23:27)

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(conststd::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;
}

  } else {
   char c1 = URL[++i];
   char c0 = URL[++i];
   int num = 0;
   num += hexChar2dec(c1) * 16 +hexChar2dec(c0);
  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
《C语言程序设计》第三版课后答案
大数相加减以及相乘模板
华为机试HJ57:高精度整数加法
超大整数相除
C 正确例题
ajax中文上传编码问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服