VC實現URL編解碼

來源:互聯網
上載者:User

標籤:blog   ar   資料   2014   log   amp   as   c   file   

    bool  DecodeUrl(char *Src, char  *url, int  MaxLen)      {          if(NULL == url || NULL == Src)          {              return false;          }          if(MaxLen == 0)          {              return false;          }                char  *p = Src;  // 用來迴圈          int    i = 0;    // i用來控制url數組                /* 臨時儲存url編碼的資料            例如: %1A%2B%3C         */          char  t = '\0';          while(*p != '\0' && MaxLen--)          {              if(*p == 0x25) // 0x25 = '%'              {                  /* 以下是十六進位數中常出現的大寫字母,小寫字母,數位判斷 */                  if(p[1] >= 'A' && p[1] <= 'Z') // 大寫字母                  {                      t = p[1] - 'A' + 10;  // A = 10,下同                  }                  else if(p[1] >= 'a' && p[1] <= 'z') // 小寫字母                  {                      t = p[1] - 'a' + 10;                  }                  else if(p[1] >= '0' && p[1] <= '9') // 數字                  {                      t = p[1] - '0';                  }                  t *= 16;  // 將數放到十位上去                        if(p[2] >= 'A' && p[2] <= 'Z') // 大寫字母                  {                      t += p[2] - 'A' + 10;                  }                  else if(p[2] >= 'a' && p[2] <= 'z') // 小寫字母                  {                      t += p[2] - 'a' + 10;                  }                  else if(p[2] >= '0' && p[2] <= '9') // 數字                  {                      t += p[2] - '0';                  }                        // 到此合成了一個十六進位數                  url[i] = t;                        p += 3, i++;              }              else              {                  // 沒有被url編碼的資料                  // '+'特殊處理.它相當於一個空格                  if(*p != '+')                  {                      url[i] = *p;                  }                  else                  {                      url[i] = 0x20;                  }                  i++;                  p++;              }          }          url[i] = '\0';  // 結束符          return true;      }  

VC實現URL編解碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.