穿越尸兄之女主叫莫陌:计算二进制的VB源程序

来源:百度文库 编辑:高校问答 时间:2024/04/29 09:53:45
谁有计算十进制转换成二进制的VB源程序啊,谢谢啦!

'------------------------------2-36进制之间的随意转换函数---------------------------------------
'也不知道有没有36进制,呵呵,可能是我自己编出来的吧。
'36进制概念,11相当与A,12相当与B,…………35相当与Z。只到在大写的A--Z之间。小写没加判断。
'到用的时候再加吧。时间关系,少写了很多的限制。
'感觉用来加密也不错。呵呵
' 开 发 者:企鹅
' 开发时间:2005/03/18
'-----------------------------------------------------------------------------------------------

'x为需要转换的数,m为未转换以前的进制,n为转换后的进制
Function zh(x As String, m As Integer, n As Integer) As String
Dim temp As Long
Dim zht() As String
Dim total As Integer

Dim mmid As String

If n > 36 Then
MsgBox "本函数最多支持36进制的转换"
Exit Function
End If
If m = 10 Then
temp = CLng(x)

Do
total = total + 1
temp = Int(temp / n)
Loop Until temp = 0

ReDim zht(total)
temp = CLng(x)
total = 0

Do
total = total + 1
zht(total) = temp Mod n
temp = Int(temp / n)
Loop Until temp = 0

For I = total To 1 Step -1
zh = zh & sz(CStr(zht(I)))
Next I
Else
For I = Len(x) To 1 Step -1
mmid = Mid(x, Len(x) - I + 1, 1)
If mmid = "1" Or mmid = "2" Or mmid = "3" Or mmid = "4" Or mmid = "5" Or mmid = "6" Or mmid = "7" Or mmid = "8" Or mmid = "9" Then
total = total + CInt(mmid) * m ^ (I - 1)
Else
total = total + (Asc(mmid) - 55) * m ^ (I - 1)
End If
Next I
zh = zh(CStr(total), 10, n)
End If

End Function

'将大于9的数转换成A---Z
Function sz(y As String) As String
If CInt(y) > 9 Then
sz = Chr(CInt(y) + 55)
Else
sz = y
End If
End Function

Private Sub Command1_Click()
Dim b, c As Integer
Dim a As String

a = CStr(InputBox("输入要转换的数"))
b = CInt(InputBox("输入此数当前的进制状态"))
c = CInt(InputBox("输入转换后的进制状态"))
MsgBox CStr(b) + " 进制数:" + a + " 转换成 " + CStr(c) + "进制数为:" + zh(a, CInt(b), c)
End Sub

Public Function DTOB(mynum As Variant) As String
Dim loopcounter As Integer
If mynum >= 2 ^ 31 Then
DTOB = "Too big"
Exit Function
End If
Do
If (mynum And 2 ^ loopcounter) = 2 ^ loopcounter Then
DTOB = "1" & DTOB
Else
DTOB = "0" & DTOB
End If
loopcounter = loopcounter + 1
Loop Until 2 ^ loopcounter > mynum
End Function

以下为测试:
Private Sub Form_Activate()
Dim Dec, Bin
Dec = InputBox("输入一个十进制数:")
MsgBox ("与此对应的二进制数为:" & DTOB(Dec))
End Sub