Thanks to Planet Source Code for these useful functions.
Public Function Bin2Dec(ByVal sBin As String) As Double Dim i As Integer For i = 1 To Len(sBin) Bin2Dec = Bin2Dec + CDbl(CInt(Mid(sBin, Len(sBin) - i + 1, 1)) * 2 ^ (i - 1)) Next i End Function Public Function BigDecToHex(ByVal DecNum) As String ' This function is 100% accurate untill 15,000,000,000,000,000 (1.5E+16) Dim NextHexDigit As Double Dim HexNum As String HexNum = "" While DecNum <> 0 NextHexDigit = DecNum - (Int(DecNum / 16) * 16) If NextHexDigit < 10 Then HexNum = Chr(Asc(NextHexDigit)) & HexNum Else HexNum = Chr(Asc("A") + NextHexDigit - 10) & HexNum End If DecNum = Int(DecNum / 16) Wend If HexNum = "" Then HexNum = "0" BigDecToHex = HexNum End Function Public Function Bin2Hex(ByVal sBin As String) As String Dim i As Integer Dim nDec As Long sBin = String(4 - Len(sBin) Mod 4, "0") & sBin 'Add zero To complete Byte For i = 1 To Len(sBin) nDec = nDec + CInt(Mid(sBin, Len(sBin) - i + 1, 1)) * 2 ^ (i - 1) Next i Bin2Hex = Hex(nDec) If Len(Bin2Hex) Mod 2 = 1 Then Bin2Hex = "0" & Bin2Hex End Function Public Function Dec2Bin(ByVal nDec As Integer) As String 'This function is the same then Hex2Bin, 'but it has been copied to speed up process Dim i As Integer Dim j As Integer Dim sHex As String Const HexChar As String = "0123456789ABCDEF" sHex = Hex(nDec) 'That the only part that is different For i = 1 To Len(sHex) nDec = InStr(1, HexChar, Mid(sHex, i, 1)) - 1 For j = 3 To 0 Step -1 Dec2Bin = Dec2Bin & nDec \ 2 ^ j nDec = nDec Mod 2 ^ j Next j Next i 'Remove the first unused 0 i = InStr(1, Dec2Bin, "1") If i <> 0 Then Dec2Bin = Mid(Dec2Bin, i) End Function Public Function Hex2Bin(ByVal sHex As String) As String Dim i As Integer Dim j As Integer Dim nDec As Long Const HexChar As String = "0123456789ABCDEF" For i = 1 To Len(sHex) nDec = InStr(1, HexChar, Mid(sHex, i, 1)) - 1 For j = 3 To 0 Step -1 Hex2Bin = Hex2Bin & nDec \ 2 ^ j nDec = nDec Mod 2 ^ j Next j Next i 'Remove the first unused 0 i = InStr(1, Hex2Bin, "1") If i <> 0 Then Hex2Bin = Mid(Hex2Bin, i) End Function Public Function Hex2Dec(ByVal sHex As String) As Long Dim i As Integer Dim nDec As Long Const HexChar As String = "0123456789ABCDEF" For i = Len(sHex) To 1 Step -1 nDec = nDec + (InStr(1, HexChar, Mid(sHex, i, 1)) - 1) * 16 ^ (Len(sHex) - i) Next i Hex2Dec = CStr(nDec) End Function