• [转] VB6.0 Dictionary 排序,生成Sign


      最近遇到好多要生成 sign 的接口,要求使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串,最后拼接上key进行MD5加密。

      规则:

    1. .    ◆ 参数名ASCII码从小到大排序(字典序);
    2. .    ◆ 如果参数的值为空不参与签名;
    3. .    ◆ 参数名区分大小写;
    4. .    ◆ 参数名Sign 、Key 不参与拼接字符串;

      发现VB6.0 的资料很少,特此整理一份网上的代码。

      转自:http://www.mzwu.com/article.asp?id=2245  

    '说明:Dictionary排序
    '参数:
    '   objDict:Dictionary对象
    '   intSort: 1 根据key排序; 2 根据value排序
    Function SortDictionary(objDict, intSort)
      ' declare our variables
      Dim strDict()
      Dim objKey
      Dim strKey, strItem
      Dim X, Y, Z
    
      ' get the dictionary count
      Z = objDict.Count
    
      ' we need more than one item to warrant sorting
      If Z > 1 Then
        ' create an array to store dictionary information
        ReDim strDict(Z, 2)
        X = 0
        ' populate the string array
        For Each objKey In objDict
            strDict(X, 1) = CStr(objKey)
            strDict(X, 2) = CStr(objDict(objKey))
            X = X + 1
        Next
    
        ' perform a a shell sort of the string array
        For X = 0 To (Z - 2)
          For Y = X To (Z - 1)
            If StrComp(strDict(X, intSort), strDict(Y, intSort), vbTextCompare) > 0 Then
                strKey = strDict(X, 1)
                strItem = strDict(X, 2)
                strDict(X, 1) = strDict(Y, 1)
                strDict(X, 2) = strDict(Y, 2)
                strDict(Y, 1) = strKey
                strDict(Y, 2) = strItem
            End If
          Next
        Next
    
        ' erase the contents of the dictionary object
        objDict.RemoveAll
    
        ' repopulate the dictionary with the sorted information
        For X = 0 To (Z - 1)
            If LCase(strDict(X, 1)) <> "sign" And LCase(strDict(X, 1)) <> "key" And strDict(X, 2) <> "" Then
                objDict.Add strDict(X, 1), strDict(X, 2)
            End If
        Next
    
      End If
    End Function

       使用方法:

        Dim dict As Dictionary
        Dim item
        Dim Return as String 
        
        Set dict = New Dictionary
        
        dict.Add "aaa", "094959"
        dict.Add "ccc", "0000000000"
        dict.Add "fff", "20180912"
    SortDictionary dict, 1 '排序 For Each item In dict Return = Return & item & "=" & dict(item) & "&" Next
       Return = Return & "key=keyvalue"
       Debug.Print Return 
  • 相关阅读:
    二维数组中的查找
    循环语句
    掷骰子游戏和条件语句
    类型转换与键盘输入
    运算符(2)
    运算符(1)
    面向对象(2)
    面向对象(1)
    理解几种排序方法
    优盘、移动硬盘简便制作启动盘
  • 原文地址:https://www.cnblogs.com/PengRay0221/p/9645528.html
Copyright © 2020-2023  润新知