• 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 }
  • 相关阅读:
    主数据管理(MDM)的成熟度
    Tensorflow实战Google深度学习框架—郑泽宇书籍整理
    《Flink基础教程》王绍学习资料
    《重新定义计算(ApacheFlink实践)》_蒋晓伟资料整理
    js实现页面的自定义翻译
    谈谈px,em,rem(采自菜鸟)
    js和css分别实现元素曲线运动
    echarts鼠标事件以及自定义数据获取
    js数组的多条件排序
    H5-meta标签使用大全
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8455165.html
Copyright © 2020-2023  润新知