把下面的代码复制到模块中,然后在程序中调用函数即可,使用时注意数值的转换范围。Option Explicit'十进制转二进制
Public Function TenturnTwo(ByVal varNum As Long)
Dim returnString As String, ModNum As Integer
Do While varNum > 0
ModNum = varNum Mod 2
varNum = varNum \ 2
returnString = Trim(Str(ModNum)) + returnString
Loop
TenturnTwo = returnString
End Function'二进制转十进制
Public Function TwoturnTen(ByVal varString As String)
Dim SLen As Long, I As Long, returnNum As Long
SLen = Len(varString)
For I = 0 To SLen - 1
returnNum = returnNum + Val(Mid(varString, I + 1, 1)) * (2 ^ (SLen - I - 1))
Next
TwoturnTen = returnNum
End Function
Public Function TenturnTwo(ByVal varNum As Long)
Dim returnString As String, ModNum As Integer
Do While varNum > 0
ModNum = varNum Mod 2
varNum = varNum \ 2
returnString = Trim(Str(ModNum)) + returnString
Loop
TenturnTwo = returnString
End Function'二进制转十进制
Public Function TwoturnTen(ByVal varString As String)
Dim SLen As Long, I As Long, returnNum As Long
SLen = Len(varString)
For I = 0 To SLen - 1
returnNum = returnNum + Val(Mid(varString, I + 1, 1)) * (2 ^ (SLen - I - 1))
Next
TwoturnTen = returnNum
End Function
''
'' Converts Decimal to Binary
'' This uses the Quotient Remainder method
''
Dim Quot As Double
Dim Remainder As Double
Dim BinOut As String
Dim I As Integer
Dim NewVal As Double
Dim TempString As String
Dim TempVal As Double
Dim BinTemp As String
Dim BinTemp1 As String
Dim PosDot As Integer
Dim Temp2 As String
'' Check to see if there is a decimal point or not
''
If InStr(1, CStr(InputData), ".") Then
MsgBox "Only Whole Numbers can be converted", vbCritical
GoTo eds
End IfBinOut = ""
NewVal = InputData
DoAgain:'' Start the Calculations off
NewVal = (NewVal / 2)
'' If we have a remainder
If InStr(1, CStr(NewVal), ".") Then
BinOut = BinOut + "1"
'' Get rid of the Remainder
NewVal = Format(NewVal, "#0")
NewVal = (NewVal - 1)
If NewVal < 1 Then
GoTo DoneIt
End If
Else
BinOut = BinOut + "0"
If NewVal < 1 Then
GoTo DoneIt
End If
End If
GoTo DoAgainDoneIt:
MsgBox BinOut
BinTemp = ""'' Reverse the Result
For I = Len(BinOut) To 1 Step -1
BinTemp1 = Mid(BinOut, I, 1)
BinTemp = BinTemp + BinTemp1
Next IBinOut = BinTemp'' Output the Result
Dec2Bin = BinOut
eds:
End Function=================
Function Bin2Dec(InputData As String) As Double
''
'' This converts Binary to Decimal
''
Dim DecOut As Double
Dim I As Integer
Dim LenBin As Double
Dim JOne As StringLenBin = Len(InputData)''
'' Make sure that it is a Binary Number
''
For I = 1 To LenBin
JOne = Mid(InputData, I, 1)
If JOne <> "0" And JOne <> "1" Then
MsgBox "NOT A BINARY NUMBER", vbCritical
Exit Function
End If
Next I
DecOut = 0
For I = Len(InputData) To 1 Step -1
If Mid(InputData, I, 1) = "1" Then
DecOut = DecOut + 2 ^ (Len(InputData) - I)
End If
Next I
Bin2Dec = DecOut
End Function
这个函数的范围大一些
http://www.csdn.net/expert/topic/702/702004.xml?temp=.5143549
http://www.csdn.net/expert/topic/670/670623.xml?temp=.1453516
http://www.csdn.net/expert/topic/669/669329.xml?temp=.7846186
http://www.csdn.net/expert/topic/668/668288.xml?temp=.5115167
http://www.csdn.net/expert/topic/661/661706.xml?temp=.4214899
http://www.csdn.net/expert/topic/658/658476.xml?temp=.3378717
http://www.csdn.net/expert/topic/657/657002.xml?temp=.3998529
http://www.csdn.net/expert/topic/635/635224.xml?temp=.7371942
http://www.csdn.net/expert/topic/631/631897.xml?temp=6.342715E-02