软件注册站
热情软件屋

 
如何把十六进制的数转换成二进制的数
编号: QA002851    
建立日期: 2000年4月16日 最后修改日期: 2003年12月20日
所属类别: Visual Basic - 其他方面
   
    操作系统: Windows98
    编程工具: vb
    问题: 请问如何把一个2位的十六进制的数转换成二进制的数?()
   
    下面是我定义的一个转换函数,你可以让他在模块中定义,或做成.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, 其他方面,

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio