你可利用HEX函数将10进制数转为16进制字符形式,然后用以下方法可将16进制转为二进制形式显示,16进制数转为二进制需通过编程解决,以下给出VB的代码。
Option Explicit
Dim bl As String * 1
Dim ccl(7) As String
Dim ccll(7) As String
Dim bl_dm As String
Dim zt_dm1 As String
Dim i As Integer
Dim j As Integer
Dim bll As String Private Sub Command1_Click()
bll = "737F"
Call hex_bin
End Sub Public Function hex_bin()
For i = 1 To 4
ccl(i) = Mid(bll, i, 1)
Next i
For j = 1 To 4
bl = ccl(j)
If bl = "F" Then
bl_dm = "1111"
ElseIf bl = "E" Then
bl_dm = "1110"
ElseIf bl = "D" Then
bl_dm = "1101"
ElseIf bl = "C" Then
bl_dm = "1100"
ElseIf bl = "B" Then
bl_dm = "1011"
ElseIf bl = "A" Then
bl_dm = "1010"
ElseIf bl = "9" Then
bl_dm = "1001"
ElseIf bl = "8" Then
bl_dm = "1000"
ElseIf bl = "7" Then
bl_dm = "0111"
ElseIf bl = "6" Then
bl_dm = "0110"
ElseIf bl = "5" Then
bl_dm = "0101"
ElseIf bl = "4" Then
bl_dm = "0100"
ElseIf bl = "3" Then
bl_dm = "0011"
ElseIf bl = "2" Then
bl_dm = "0010"
ElseIf bl = "1" Then
bl_dm = "0001"
ElseIf bl = "0" Then
bl_dm = "0000"
Else:
bl_dm = ""
End If
ccll(j) = bl_dm
Next j
zt_dm1 = ccll(1) + ccll(2) + ccll(3) + ccll(4)
Text1 = zt_dm1
End Function
Option Explicit
Dim bl As String * 1
Dim ccl(7) As String
Dim ccll(7) As String
Dim bl_dm As String
Dim zt_dm1 As String
Dim i As Integer
Dim j As Integer
Dim bll As String Private Sub Command1_Click()
bll = "737F"
Call hex_bin
End Sub Public Function hex_bin()
For i = 1 To 4
ccl(i) = Mid(bll, i, 1)
Next i
For j = 1 To 4
bl = ccl(j)
If bl = "F" Then
bl_dm = "1111"
ElseIf bl = "E" Then
bl_dm = "1110"
ElseIf bl = "D" Then
bl_dm = "1101"
ElseIf bl = "C" Then
bl_dm = "1100"
ElseIf bl = "B" Then
bl_dm = "1011"
ElseIf bl = "A" Then
bl_dm = "1010"
ElseIf bl = "9" Then
bl_dm = "1001"
ElseIf bl = "8" Then
bl_dm = "1000"
ElseIf bl = "7" Then
bl_dm = "0111"
ElseIf bl = "6" Then
bl_dm = "0110"
ElseIf bl = "5" Then
bl_dm = "0101"
ElseIf bl = "4" Then
bl_dm = "0100"
ElseIf bl = "3" Then
bl_dm = "0011"
ElseIf bl = "2" Then
bl_dm = "0010"
ElseIf bl = "1" Then
bl_dm = "0001"
ElseIf bl = "0" Then
bl_dm = "0000"
Else:
bl_dm = ""
End If
ccll(j) = bl_dm
Next j
zt_dm1 = ccll(1) + ccll(2) + ccll(3) + ccll(4)
Text1 = zt_dm1
End Function
Do
Cbinary = LDecimal Mod 2 & Cbinary
LDecimal = LDecimal \ 2
Loop While LDecimal
End FunctionPublic Function CDecimal(ByVal SBinary As String) As Long
Dim i As Long
For i = 1 To Len(SBinary)
CDecimal = CDecimal * 2 + Val(Mid(SBinary, i, 1))
Next i
End FunctionPrivate Sub Command1_Click()
Debug.Print Cbinary(10); CDecimal("1010")
End Sub??
Dim cBit(30) As String
Dim lTmp As Long
Dim i As Integer
Dec2Bin = vbNullString
lTmp = val
i = 0
Do
val = val \ 2
If (lTmp - 2 * val) = 1 Then
cBit(i) = "1"
Else
cBit(i) = "0"
End If
lTmp = val
i = i + 1
If val = 0 Then Exit Do
Loop
For i = 30 To 0 Step -1
Dec2Bin = Dec2Bin & cBit(i)
Next i
End Function测试程序:
Private Sub Command1_Click()
debug.print Dec2Bin(1254245)
End Sub
Dim i As Integer For i = 1 To Len(strVal)
Bin2Dec = Bin2Dec + Val(Mid(strVal, i, 1)) * (2 ^ (Len(strVal) - i))
Next iEnd Function
我的函数比较短,你看看:
Private Function Dec(ByVal Value As String) As Long
' 二进制转十进制
Dim lngSum As Long
Dim i As Integer
lngSum = 0
For i = 1 To Len(Value)
lngSum = lngSum + Int(Mid(Value, i, 1)) * Powers(Len(Value) - i)
Next i
Dec = lngSum
End FunctionPrivate Function Bin(ByVal Value As Long) As String
' 十进制转二进制
Dim intMod As Integer
Dim lngSum As Long
Dim strSum As String
lngSum = Value
strSum = ""
Do Until lngSum <= 0
intMod = lngSum Mod 2
strSum = strSum & Trim(Str(intMod))
lngSum = (lngSum - intMod) / 2
Loop
Bin = StrReverse(strSum)
End FunctionPrivate Function Powers(ByVal Value As Integer) As Long
' 幂函数,2的Value次方
Select Case Value
Case 0
Powers = 1
Case 1
Powers = 2
Case Else
Powers = Powers(Value - 1) * 2
End Select
End Function