zoukankan      html  css  js  c++  java
  • [转] 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 
  • 相关阅读:
    Python入门-函数进阶
    Python入门-初始函数
    Leetcode300. Longest Increasing Subsequence最长上升子序列
    Leetcode139. Word Break单词拆分
    Leetcode279. Perfect Squares完全平方数
    Leetcode319. Bulb Switcher灯泡开关
    Leetcode322. Coin Change零钱兑换
    二叉树三种遍历两种方法(递归和迭代)
    Leetcode145. Binary Tree Postorder Traversal二叉树的后序遍历
    Leetcode515. Find Largest Value in Each Tree Row在每个树行中找最大值
  • 原文地址:https://www.cnblogs.com/PengRay0221/p/9645528.html
Copyright © 2011-2022 走看看