' cBigNumber.cls
Option Explicit
Private byteArray(100) As Byte
Public Sub SetNumber(ByVal Number As String)
Call Clear
Dim i As Integer
For i = 1 To Len(Number)
byteArray(99 - Len(Number) + i) = Asc(Mid(Number, i, 1)) - Asc("0")
Next i
End Sub
Public Function GetNumber() As String
Dim i As Integer
For i = 0 To 99
GetNumber = GetNumber & Chr(byteArray(i) + Asc("0"))
Next i
While Left(GetNumber, 1) = "0"
GetNumber = Right(GetNumber, Len(GetNumber) - 1)
Wend
End Function
Public Function Add(ByVal NumberToAdd As String)
Dim i As Integer, TempArray(100) As Byte
Dim Result As Byte, Carry As Boolean
For i = 1 To Len(NumberToAdd)
TempArray(99 - Len(NumberToAdd) + i) = Asc(Mid(NumberToAdd, i, 1)) - Asc("0")
Next i
For i = 99 To 0 Step -1
Result = IIf(Carry, byteArray(i) + TempArray(i) + 1, byteArray(i) + TempArray(i))
Carry = False
If Result >= 10 Then
Carry = True
Result = Result Mod 10
End If
byteArray(i) = Result
Next i
End Function
Private Function Clear()
Dim i As Integer
For i = 0 To 99
byteArray(i) = 0
Next i
End Function