I'm trying to convert 6E29210100 (hexa) to binary. With smaller hexa numbers, the code works fine. and I don't know why. I would like it was working to 10 characters at least.


Code returns: 00101001001000010000000100000000
Right answer: *0110111000101001001000010000000100000000‬

Please, have a look in short version code bellow (full in attachment):

Dim HexNum As String
Dim BinNum As String
Dim lHexNum As Long
Dim i As Integer
   
Public Sub Teste()

    HexNum = "6E29210100"
   
    HexToBin (HexNum)
    
    MsgBox "Bin: " & HexToBin
    BinNum = vbNullString
        
End Sub

Public Function HexToBin(Optional HexNum As String) As String
   
   On Error GoTo ErrorHandler
   
   i = 0
   
   lHexNum = Val("&h" & HexNum)
   
   Do
      If lHexNum And 2 ^ i Then
         BinNum = "1" & BinNum
      Else
         BinNum = "0" & BinNum
      End If
      i = i + 1
   Loop Until 2 ^ i > lHexNum

   HexToBin = BinNum

ErrorHandler:

End Function