2

そのため、VbScript でアプリケーションを作成しており、IBAN 番号を検証しようとしています。ただし、問題は、私が改造しなければならない数が大きすぎることです.

例: 734027177486111478 mod 97

それが私がやりたいことですが、これを行うために使用するタイプが見つからないようです。以下は、私が現在使用しているコードです。例の場合、最後のポイントの vCheckCode は 734027177486111478 です。

Function checkIBAN(ByVal vIban)
vLandcode = Mid(vIban, 1, 2)    

Select Case vLandcode
    Case "BE"
        vIban = Replace(vIban, " ", "")

        If Len(vIban) = 16 Then
            vPrefix = Mid(vIban, 1, 4)
            vCheckCode = Replace(vIban, vPrefix, "")
            vSuffix = Replace(vPrefix, "BE", "1114")
            vCheckCode = vCheckCode + vSuffix
            vCheckCode = CDbl(vCheckCode)
            vResult = vCheckCode Mod 97             
        End If
End Select
End Function

これを行う方法について何か考えはありますか?

前もって感謝します!

4

2 に答える 2

3

734027177486111478 は 32 ビット整数として表すには大きすぎるため、Mod 97このように使用することはできません。

簡単な解決策は、いくつかの基本的な数学を使用することです。

  • (a + b) mod n = ((a mod n) + (b mod n)) mod n
  • (a * b) mod n = ((a mod n) * (b mod n)) mod n

それから、モジュロ桁を桁ごとに計算できます。

Function Mod97(ByVal vIban)
    Dim i, m, digit
    m = 0
    For i = 1 To Len(vIban)
        digit = CInt(Mid(vIban, i, 1))
        m = (10*m + digit) Mod 97
    Next
    Mod97 = m
End Function

Mod97("734027177486111478")正しいように見える 1 を返します。

于 2013-04-11T07:55:48.510 に答える