算法共享:十进制与二进制的转换问题
在FAQ里看到下面这张十进制转二进制的例子
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=187068
觉得算法上不够科学
其实只要知道二进制写法与十进制数字的关系,你会发现解决这个问题是非常简单的事情
看下面这个函数:
Public Function ToBinary(Num As Long) As String
Do
ToBinary = Num Mod 2 & ToBinary
Num = Num \ 2
Loop While Num
End Function
原理是这样的(以十进制10为例):
10 整除 2 等于 5 余数 0
5 整除 2 等于 2 余数 1
2 整除 2 等于 1 余数 0
1 整除 2 等于 0 余数 1
余数为零时停止运算 倒过来 ↑
十进制数字10的二进制写法即为1010
VB中同样没有提供二进制到十进制的转换函数
知道了上面的原理,逆向运算就行了
Public Function ToDecimal(BinStr As String) As Long
Dim i As Long
For i = 1 To Len(BinStr)
ToDecimal = ToDecimal * 2 + Val(Mid(BinStr, i, 1))
Next i
End Function
希望对你有帮助