Hexadecimal to Binary Conversion

S

sean_f

hi all,

does anyone know how to convert from hexadecimal
00017fff
or
3

to binary
00000000000000010111111111111111
or
011

Many Thanks
sean
 
S

sean_f

Unfortunately I cannot rely on users to have the tool pak installed.

Thanks

sean
 
M

Michel Pierron

Hi sean_f;

Private Function HexToBin$(HexNum$)
Dim i As Byte, B As String * 1
Dim lNum&: lNum = Val("&H" & HexNum)
Do
If lNum And 2 ^ i Then B = "1" Else B = "0"
HexToBin = B & HexToBin
i = i + 1
Loop Until 2 ^ i > lNum
End Function

Sub Test
MsgBox HexToBin("00017FFF"), 64
End Sub

Regards,
MP
 
L

Leo Heuser

sean_f said:
hi all,

does anyone know how to convert from hexadecimal
00017fff
or
3

to binary
00000000000000010111111111111111
or
011

Many Thanks
sean

Hi Sean

Here's a general function to convert from one
number system to another:

Function Conv(Figure As String, _
FromBase As Integer, _
ToBase As Integer, _
Optional NumberOfDigits As Integer) As String
'Leo Heuser, October 1999
'=conv(Figure,FromBase,ToBase,NumberOfDigits)
'Examples: =conv(1234,6,16,6) or =conv("45ff",16,2,32)
'If NumberOfDigits is set to 0, left out or set to fewer digits
'than are in the result, the result will be displayed without
'leading zeroes.
'The setup will convert a number from base 2-16
'to another base 2-16, but the string Digits can be
'expanded to Z, and thereby covering base 2 through 36
'If the line "Figure = UCase(Figure)" is deleted, it's possible
'to place lower case letters in Digits to cover base 2-62.
'Please keep the above text, if you pass on this routine.

Dim Digits As String
Dim ToBaseTen As Long
Dim Dummy As Variant
Dim Counter As Integer
Dim Result As String
Conv = "Input error"
Digits = "0123456789ABCDEF"
If ToBase > Len(Digits) Then Exit Function
Figure = UCase(Figure)
For Counter = 1 To Len(Figure)
Dummy = Mid$(Figure, Counter, 1)
If InStr(Left$(Digits, FromBase), Dummy) = 0 Then
Exit Function
Else
ToBaseTen = ToBaseTen + (InStr(Digits, Dummy) - 1) * _
(FromBase ^ (Len(Figure) - Counter))
End If
Next Counter
While ToBaseTen > 0
Result = Mid$(Digits, (ToBaseTen Mod ToBase) + 1, 1) & Result
ToBaseTen = Int(ToBaseTen / ToBase)
Wend
If NumberOfDigits = 0 Or NumberOfDigits < Len(Result) Then
Conv = Result
Else
Conv = Right$(String$(NumberOfDigits - Len(Result), "0") & _
Result, NumberOfDigits)
End If
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top