这是我老早以前编写的2、8、10、16进制转换程序,可能对你有帮助:
Dim Number As Long
Dim Jinzhi As Integer
Dim OJinzhi As Integer
Private Sub cmdClose_Click()
Me.Hide
End Sub
Private Sub Form_Load()
Jinzhi = 10
OJinzhi = 10
End Sub
Private Sub optInput_Click(Index As Integer)
Select Case Index
Case 0
Jinzhi = 10
Case 1
Jinzhi = 8
Case 2
Jinzhi = 16
Case 3
Jinzhi = 2
End Select
Call txtInput_Change
End Sub
Private Sub optOutput_Click(Index As Integer)
Select Case Index
Case 0
OJinzhi = 10
Case 1
OJinzhi = 8
Case 2
OJinzhi = 16
Case 3
OJinzhi = 2
End Select
Call txtInput_Change
End Sub
Private Sub txtInput_Change()
On Error GoTo InputError
If txtInput = "" Then txtOutput = ""
Select Case Jinzhi
Case 10
txtInput.MaxLength = 0
Number = CLng(txtInput)
Case 8
txtInput.MaxLength = 8
Number = CLng(Val("&O" + txtInput))
Case 16
txtInput.MaxLength = 8
Number = CLng(Val("&H" + txtInput))
Case 2
txtInput.MaxLength = 10
Number = CLng(txtInput)
Dim X As Long
For i = 1 To Len(Str(Number))
X = (X + Val(Mid(Str(Number), i, 1))) * 2
DoEvents
Next
Number = X / 2
End Select
Call Zhuanhuan
Exit Sub
InputError:
Number = 0
txtInput = 0
txtOutput = 0
Exit Sub
End Sub
Private Sub Zhuanhuan()
On Error Resume Next
Select Case OJinzhi
Case 10
txtOutput = Number
Case 8
txtOutput = Oct(Number)
Case 16
txtOutput = Hex(Number)
Case 2
Dim T As String
Dim X As Long: X = Number
Do Until X = 1
T = Trim(Str(X Mod 2) + T)
X = Fix(X / 2)
DoEvents
Loop
txtOutput = "1" + T
End Select