-2

有人知道我如何在访问中应用 Lahn 算法,用电话号码验证参考号码

4

1 回答 1

0

此函数将为您计算校验位:

Public Function Modulus1x(ByVal strNum As String, ByVal intModulus As Integer) As Integer

    ' Creates the Modulus-10 or -11 check digit for strNum.
    ' Non-numeric characters are ignored.

    ' Maximum length of number.
    Const cintNumLenMax = 31

    Dim strTmp    As String
    Dim intChr    As Integer
    Dim intLen    As Integer
    Dim intSum    As Integer
    Dim intVal    As Integer
    Dim intWeight As Integer
    Dim intCount  As Integer
    Dim intChk    As Integer

    Select Case intModulus
      Case 10, 11
        intLen = Len(strNum)
        If intLen > 0 Then
          ' Remove non-numeric characters.
          For intCount = 1 To intLen
            intChr = Asc(Mid(strNum, intCount))
            If intChr >= 48 And intChr <= 57 Then
              strTmp = strTmp & Chr(intChr)
            End If
          Next intCount
          strNum = strTmp
          intLen = Len(strNum)

          If intLen > 0 Then
            ' Calculate check digit.
            If intLen <= cintNumLenMax Then
              For intCount = 1 To intLen 
                intVal = Val(Mid(strNum, intLen - intCount + 1, 1))
                Select Case intModulus
                  Case 10
                    intWeight = 1 + (intCount Mod 2)
                    intVal = intWeight * intVal
                    intVal = Int(intVal / 10) + (intVal Mod 10)
                  Case 11
                    intWeight = 2 + ((intCount - 1) Mod 6)
                    intVal = intWeight * intVal
                End Select
                intSum = intSum + intVal
              Next intCount
              intChk = -Int(-intSum / intModulus) * intModulus - intSum
            End If
          End If
        End If
    End Select

    Modulus1x = intChk

End Function

只需传递电话号码:

PhoneNumber = "+01234568790"
CheckDigit = Modulus1x(PhoneNumber, 10)

PhoneNumberWithCheckDigit = PhoneNumber & CheckDigit

并在这里使用功能:模数检查

您可以验证PhoneNumberWithCheckDigit

于 2016-04-18T09:13:13.023 回答