 |
下面是我定义的一个转换函数,你可以让他在模块中定义,或做成.dll的com组件,程序挺简单的,我就没有加详细注释。一些非法字符输入的判断我没有作,他可以在输入时自己作一下。
Public Function Hex2Bin(SourceHex As String) As String
Dim StrTemp As String '临时的交换,也可不定义直接对SourceHex进行修改,如果SourceHex不再有用的话.
Dim StrLen As Integer
Hex2Bin = ""
StrTemp = StrConv(SourceHex, 1)
For i = 1 To Len(SourceHex)
Select Case Left(StrTemp, 1)
Case 0
Hex2Bin = Hex2Bin + "0000"
Case 1
Hex2Bin = Hex2Bin + "0001"
Case 2
Hex2Bin = Hex2Bin + "0010"
Case 3
Hex2Bin = Hex2Bin + "0011"
Case 4
Hex2Bin = Hex2Bin + "0100"
Case 5
Hex2Bin = Hex2Bin + "0101"
Case 6
Hex2Bin = Hex2Bin + "0110"
Case 7
Hex2Bin = Hex2Bin + "0111"
Case 8
Hex2Bin = Hex2Bin + "1000"
Case 9
Hex2Bin = Hex2Bin + "1001"
Case "A"
Hex2Bin = Hex2Bin + "1010"
Case "B"
Hex2Bin = Hex2Bin + "1011"
Case "C"
Hex2Bin = Hex2Bin + "1100"
Case "D"
Hex2Bin = Hex2Bin + "1101"
Case "E"
Hex2Bin = Hex2Bin + "1110"
Case "F"
Hex2Bin = Hex2Bin + "1111"
End Select
StrTemp = Mid(StrTemp, 2, Len(StrTemp) - 1)
Next i
While Left(Hex2Bin, 1) = "0" '去掉前面的零
Hex2Bin = Mid(Hex2Bin, 2, Len(Hex2Bin) - 1)
Wend
If Hex2Bin="" Then
Hex2Bin="0"
End If '为零的特殊情况
End Function
主持人注:这里有一个例子 dec.zip,来自VB编程乐园(http://www.vbeden.com)。
刘建平的意见:
这个更简单:
'返回一个数的二进制字符串
'VL不能大于2的30次方,否则会溢出错误,FG为每四个字符间的分隔符(为增强可读性,可选输入)
Public Function Bin(VL As Long, Optional FG As String) As String
Dim binStr As String
Dim i As Integer
For i = 0 To 30 '本应为31,只因会溢出错误
binStr = IIf((VL And 2 ^ i) > 0, "1", "0") & IIf(i Mod 4 = 0, FG, "") & binStr
Next i
Bin = "0" & binStr '所以只好在前面多加一个0
End Function
print htob(&hc7,",")
1100,0111
相关问题:
QA002540 "如何进行进制间相互转换"
此问题由Michael Wolf回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 其他方面, 。
|