• Status: Solved
• Priority: Medium
• Security: Public
• Views: 233

# Conversion Routines

Hi all,

Does anybody out there have conversion routines for the following.

Decimal to Binary
Binary to Decimal

Vin.
0
VincentLawlor
• 3
• 3
1 Solution

Commented:
Vin,

I'm sure that there must be better solutions around, but I post this one anyway.

Function DecToBin(d As Long) As String
Dim x As Integer
Dim b As String

Do
If d And 2 ^ x Then
b = "1" & b
Else
b = "0" & b
End If
x = x + 1
Loop Until 2 ^ x > d

DecToBin = b
End Function

Function BinToDec(b As String) As Long
Dim x As Integer
Dim d As Long

For x = 1 To Len(b)
If Mid(Right(b, x), 1, 1) = "1" Then
d = d + 2 ^ (x - 1)
End If
Next x

BinToDec = d
End Function

Ture Magnusson
0

Author Commented:
That will do the job

Just couldn't remember the twos compliment routines and I'm in a bit of a hurry.

Thanks.

Vin.
0

Commented:

/Ture
0

Author Commented:
Don't suppose you have hex routines of a similar nature

The VB Hex function works fine but if I try to convert a Hex value

Function ConvertHexToDec(strHex as String) as Long

dim strValue as String
dim iTemp as Integer
strValue = "&H" + strHex

ConvertHexToDec = Val(strValue)

Exit Function

I get -1 not 65535 as expected for FFFF

Any ideas

Vin.

0

Author Commented:
I have the Hex to decimal function

Function HexToDec(strInput As String) As Variant

Dim iCounter As Integer
iCounter = 0
Dim lResult
lResult = 0
For iCounter = 1 To Len(strInput)
If Asc(Mid(strInput, iCounter)) >= 48 And Asc(Mid(strInput, iCounter)) <= 57 Then
lResult = lResult + (Asc(Mid(strInput, iCounter)) - 48)
Else
lResult = lResult + (Asc(UCase(Mid(strInput, iCounter))) - 65) + 10
End If

Next iCounter

HexToDec = lResult

End Function

Do you by any chance have a DecToHex function the VB one only works up to ffffffff

Vin.
0

Commented:
Vin,

There's really no need for a DecToHex function, because there is already a HEX function that converts a number to hex. In this code I've "encapsuled" it within a custom function named DecToHex.

Function DecToHex(d As Long) As String
DecToHex = Hex(d)
End Function

It is also easy to convert hext to decimal. Just precede the hex number with "&H" and use VB's CDbl conversion function.

Function HexToDec(h As String) As Long
HexToDec = CDbl("&H" & h)
End Function

/Ture
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.