设为首页 收藏本站 切换语言

编码和相关转换函数  

| 发表于 2020-9-19 13:06:12 | 显示全部楼层 |复制链接
  1. string hex(int i)
  2.   {
  3.    static string h="0123456789ABCDEF";
  4.    string ret="";
  5.    int a = i % 16;
  6.    int b = (i-a)/16;
  7.    if(b>15)
  8.       StringConcatenate(ret,ret,hex(b),StringSubstr(h,a,1));
  9.    else
  10.       StringConcatenate(ret,ret,StringSubstr(h,b,1),StringSubstr(h,a,1));
  11.    return (ret);
  12.   }
  13. string URLEncode(string toCode)
  14.   {
  15.    int max=StringLen(toCode);
  16.    string RetStr="";
  17.    for(int i=0; i<max; i++)
  18.      {
  19.       string c = StringSubstr(toCode,i,1);
  20.       ushort asc = StringGetCharacter(c, 0);
  21.       if((asc >= '0' && asc <= '9')
  22.          || (asc >= 'a' && asc <= 'z')
  23.          || (asc >= 'A' && asc <= 'Z')
  24.          || (asc == '-')
  25.          || (asc == '.')
  26.          || (asc == '_')
  27.          || (asc == '~'))
  28.          StringAdd(RetStr,c);
  29.       else
  30.         {
  31.          StringConcatenate(RetStr,RetStr,"%",hex(asc));
  32.         }
  33.      }
  34.    return (RetStr);
  35.   }
  36. string arrayEncode(string &array[][2])
  37.   {
  38.    string ret="";
  39.    string key,val;
  40.    int l=ArrayRange(array,0);
  41.    for(int i=0; i<l; i++)
  42.      {
  43.       key = URLEncode(array[i,0]);
  44.       val = URLEncode(array[i,1]);
  45.       StringConcatenate(ret,ret,key,"=",val);
  46.       if(i+1<l)
  47.          StringConcatenate(ret,ret,"&");
  48.      }
  49.    return (ret);
  50.   }
  51. void sortParam(string&arr[][2])
  52.   {
  53.    string k1, k2;
  54.    string v1, v2;
  55.    int n = ArrayRange(arr,0);
  56. // bubble sort
  57.    int i, j;
  58.    for(i = 0; i < n-1; i++)
  59.      {
  60.       // Last i elements are already in place
  61.       for(j = 0; j < n-i-1; j++)
  62.         {
  63.          int x = j+1;
  64.          k1 = arr[j][0];
  65.          k2 = arr[x][0];
  66.          if(k1 > k2)
  67.            {
  68.             // swap values
  69.             v1 = arr[j][1];
  70.             v2 = arr[x][1];
  71.             arr[j][1] = v2;
  72.             arr[x][1] = v1;
  73.             // swap keys
  74.             arr[j][0] = k2;
  75.             arr[x][0] = k1;
  76.            }
  77.         }
  78.      }
  79.   }
  80. void addParam(string key,string val,string&array[][2])
  81.   {
  82.    int x=ArrayRange(array,0);
  83.    if(ArrayResize(array,x+1)>-1)
  84.      {
  85.       array[x][0]=key;
  86.       array[x][1]=val;
  87.      }
  88.   }
复制代码
举报

评论 使用道具

精彩评论17

鸿运当归
DD
 楼主 | 发表于 2020-9-19 13:07:46 | 显示全部楼层
使用上述函数的示例如下:
   string params[][2];

   addParam("oauth_callback", "oob", params);
   addParam("oauth_consumer_key", consumer_key, params);

   sortParam(params);
举报

点赞 评论 使用道具

thekof32
CC
| 发表于 2021-3-5 09:17:45 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

latage
未及格
| 发表于 2021-3-5 20:48:08 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

zhy2505000
DD
| 发表于 2021-3-6 08:39:35 | 显示全部楼层
大家都是需要的
举报

点赞 评论 使用道具

qwe11
CCC
| 发表于 2021-5-10 18:06:01 | 显示全部楼层
感谢分享!
举报

点赞 评论 使用道具

daerwushen
DD
| 发表于 2021-5-10 19:03:32 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

升龙
DD
| 发表于 2021-5-11 20:14:37 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

jongjongyoshen
D
| 发表于 2021-11-1 08:34:56 | 显示全部楼层
举报

点赞 评论 使用道具

一语清清
D
| 发表于 2021-11-1 09:55:50 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

668
DDD
| 发表于 2021-11-24 15:57:28 | 显示全部楼层
感謝分享
举报

点赞 评论 使用道具

terence191
DDD
| 发表于 2021-11-24 22:10:40 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

yimu77
DDD
| 发表于 2021-11-25 10:05:43 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

jongjongyoshen
D
| 发表于 2022-1-28 06:23:41 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

liguangxing2007
DDD
| 发表于 2022-1-28 07:35:20 | 显示全部楼层
看不懂
举报

点赞 评论 使用道具

jrml
未及格
| 发表于 2022-1-28 10:51:59 | 显示全部楼层
谢谢分享!
举报

点赞 评论 使用道具

ea123ea
DDD
| 发表于 2022-1-28 12:51:56 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

紫竹青荷
CC
| 发表于 2022-5-22 15:42:13 | 显示全部楼层
路过感谢分享
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)