将十进制数除以进制(2,8,16),得出余数和商,将商循环地除以进制,直到商为0。将每次相除产生的余数逆排列,就是转换的结果。例如:45=>101101。
- 在窗体上安排如图28的控件。
图28
- 输入代码:
Dim Shared Number As Integer, n As Integer '窗体公用变量
Dim Shared Bin1() As String
Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)
Dim i As Integer
Dim myChar(15) As String, Ch As String
For i = 0 To 9
myChar(i) = Str(i)
Next
For i = 0 To 5
myChar(10 + i) = Chr(Asc("A") + i)
Next
Trans(Bin1(),myChar())
For i = UBound(Bin1) To 1 Step -1
Ch=Ch & Bin1(i)
Next
txtResult.Text=Ch
End Sub
'[Form1]事件 : 窗口完全显示后。
Sub Form1_Shown(hWndForm As hWnd,UserData As Integer)
n=2
End Sub
'[Form1.cmbSelect]事件 : 列表框中更改当前选择时
Sub Form1_cmbSelect_CBN_SelChange(hWndForm As hWnd, hWndControl As hWnd)
n = ValInt(cmbSelect.Text)
End Sub
'[Form1.txtInput]事件 : 失去输入焦点
Sub Form1_txtInput_EN_KillFocus(hWndForm As hWnd, hWndControl As hWnd)
Dim response As Integer
If Val(txtInput.Text) <> 0 Then
Number = Val(txtInput.Text)
Else
response = MsgBox("数据输入错误!")
txtInput.SetFocus()
End If
End Sub
Sub Trans(Arry() As String, S() As String)
Dim r As Integer, k As Integer
k = 0
Do Until Number = 0
r = Number Mod n
k = k + 1
ReDim Preserve Arry(k)
Arry(k) = S(r)
Number = Int(Number / n)
Loop
End Sub