zoukankan      html  css  js  c++  java
  • 76.CGI编码

    • CGI编码
      1  "%D6%DC%C8%F0%B8%A3";
    • 转换到字符串中:
       1 //CGI编码转到char类型的tmpstr中中
       2 char* change(char *str)
       3 {
       4     //分配内存
       5     char *tempstr = malloc(strlen(str) + 1);
       6     //x是tempstr的下标,y是str的下标,依次赋值
       7     int x=0, y=0;
       8     //分别代表第一个编码,第二个编码
       9     char assii_1, assii_2;
      10     //如果传入的str不为空则一直循环
      11     while (str[y])
      12     {
      13         //赋值并进行判断
      14         if ((tempstr[x]=str[y]) =='%')
      15         {
      16             //'%'后第一个进行编码
      17             if (str[y+1]>='A')
      18             {
      19                 assii_1 = str[y + 1] - 55;
      20             } 
      21             else
      22             {
      23                 assii_1 = str[y + 1] - 48;
      24             }
      25 
      26             //‘%’后第二个进行编码
      27             if (str[y + 2] >= 'A')
      28             {
      29                 assii_2= str[y + 2] - 55;
      30             }
      31             else
      32             {
      33                 assii_2 = str[y + 2] - 48;
      34             }
      35             //把解析出来的赋给tempstr
      36             tempstr[x] = assii_1 * 16 + assii_2;
      37 
      38             //前进
      39             y += 2;
      40 
      41         }
      42         //依次前进
      43         x++;
      44         y++;
      45     }
      46     //最后一位置零
      47     tempstr[x] = '';
      48 
      49     //返回结果
      50     return tempstr;
      51 }



    完整代码:

     1 #include<stdio.h>
     2 
     3 //CGI编码转到char类型的tmpstr中中
     4 char* change(char *str)
     5 {
     6     //分配内存
     7     char *tempstr = malloc(strlen(str) + 1);
     8     //x是tempstr的下标,y是str的下标,依次赋值
     9     int x=0, y=0;
    10     //分别代表第一个编码,第二个编码
    11     char assii_1, assii_2;
    12     //如果传入的str不为空则一直循环
    13     while (str[y])
    14     {
    15         //赋值并进行判断
    16         if ((tempstr[x]=str[y]) =='%')
    17         {
    18             //'%'后第一个进行编码
    19             if (str[y+1]>='A')
    20             {
    21                 assii_1 = str[y + 1] - 55;
    22             } 
    23             else
    24             {
    25                 assii_1 = str[y + 1] - 48;
    26             }
    27 
    28             //‘%’后第二个进行编码
    29             if (str[y + 2] >= 'A')
    30             {
    31                 assii_2= str[y + 2] - 55;
    32             }
    33             else
    34             {
    35                 assii_2 = str[y + 2] - 48;
    36             }
    37             //把解析出来的赋给tempstr
    38             tempstr[x] = assii_1 * 16 + assii_2;
    39 
    40             //前进
    41             y += 2;
    42 
    43         }
    44         //依次前进
    45         x++;
    46         y++;
    47     }
    48     //最后一位置零
    49     tempstr[x] = '';
    50 
    51     //返回结果
    52     return tempstr;
    53 }
    54 
    55 
    56 
    57 void main()
    58 {
    59     char str[128] = "%D6%DC%C8%F0%B8%A3";
    60     char *res = change(str);
    61     printf("%d
    ", strlen(res));
    62     printf("%s", res);
    63 
    64     system("pause");
    65 }
  • 相关阅读:
    JS reduce方法的使用
    面试娱录
    sticky置顶功能影响了锚点定位
    postcss-px-to-viewport移动端自适应
    axios请求参数自动拼接到了地址那里
    ping 不通。无法访问目标主机
    JS前后台方法的相互调用
    SQL server2008 无法连接服务器
    Assembly.Load未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
    JS判断IE和非IE
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8455165.html
Copyright © 2011-2022 走看看