我在开发的时候遇到外部硬件需要2进制数(共8位)来控制,但软件本身返回的是16进制的,想请问一下,怎么才能把16进制转换成2进制呢?急等!!

解决方案 »

  1.   

    如下是24位二进制数据转换为16进制的函数:
    Public Function bin_hex()
    '2-16转换
    bb_h(6) = fasong(31) & fasong(30) & fasong(29) & fasong(28)
    bb_h(7) = fasong(27) & fasong(26) & fasong(25) & fasong(24)
    bb_h(0) = fasong(23) & fasong(22) & fasong(21) & fasong(20)
    bb_h(1) = fasong(19) & fasong(18) & fasong(17) & fasong(16)
    bb_h(2) = fasong(15) & fasong(14) & fasong(13) & fasong(12)
    bb_h(3) = fasong(11) & fasong(10) & fasong(9) & fasong(8)
    bb_h(4) = fasong(7) & fasong(6) & fasong(5) & fasong(4)
    bb_h(5) = fasong(3) & fasong(2) & fasong(1) & fasong(0)
    For i = 0 To 7
    If bb_h(i) = "1111" Then
    bb_hh(i) = "F"
    ElseIf bb_h(i) = "1110" Then
    bb_hh(i) = "E"
    ElseIf bb_h(i) = "1101" Then
    bb_hh(i) = "D"
    ElseIf bb_h(i) = "1100" Then
    bb_hh(i) = "C"
    ElseIf bb_h(i) = "1011" Then
    bb_hh(i) = "B"
    ElseIf bb_h(i) = "1010" Then
    bb_hh(i) = "A"
    ElseIf bb_h(i) = "1001" Then
    bb_hh(i) = "9"
    ElseIf bb_h(i) = "1000" Then
    bb_hh(i) = "8"
    ElseIf bb_h(i) = "0111" Then
    bb_hh(i) = "7"
    ElseIf bb_h(i) = "0110" Then
    bb_hh(i) = "6"
    ElseIf bb_h(i) = "0101" Then
    bb_hh(i) = "5"
    ElseIf bb_h(i) = "0100" Then
    bb_hh(i) = "4"
    ElseIf bb_h(i) = "0011" Then
    bb_hh(i) = "3"
    ElseIf bb_h(i) = "0010" Then
    bb_hh(i) = "2"
    ElseIf bb_h(i) = "0001" Then
    bb_hh(i) = "1"
    ElseIf bb_h(i) = "0000" Then
    bb_hh(i) = "0"
    End If
    Next i
    fa1 = bb_hh(6) & bb_hh(7) & bb_hh(0) & bb_hh(1) & bb_hh(2) & bb_hh(3) & bb_hh(4) & bb_hh(5)
    Text4 = fa1
    End Function如下是16进制数据转换为2进制的函数
    Private Function hex_bin1()
    '16-2转换
    For i = 1 To 6
    cclG(i) = Mid(blLg, i, 1)
    If cclG(i) >= Chr(48) And cclG(i) <= Chr(57) Or cclG(i) >= Chr(65) And cclG(i) <= Chr(70) Then
       cclG(i) = cclG(i)
    Else
        Exit Function '退出过程函数
    End If
    Next i
    For j = 1 To 6
    blg = cclG(j)
    If blg = "F" Then
    blg_dm = "1111"
    ElseIf blg = "E" Then
    blg_dm = "1110"
    ElseIf blg = "D" Then
    blg_dm = "1101"
    ElseIf blg = "C" Then
    blg_dm = "1100"
    ElseIf blg = "B" Then
    blg_dm = "1011"
    ElseIf blg = "A" Then
    blg_dm = "1010"
    ElseIf blg = "9" Then
    blg_dm = "1001"
    ElseIf blg = "8" Then
    blg_dm = "1000"
    ElseIf blg = "7" Then
    blg_dm = "0111"
    ElseIf blg = "6" Then
    blg_dm = "0110"
    ElseIf blg = "5" Then
    blg_dm = "0101"
    ElseIf blg = "4" Then
    blg_dm = "0100"
    ElseIf blg = "3" Then
    blg_dm = "0011"
    ElseIf blg = "2" Then
    blg_dm = "0010"
    ElseIf blg = "1" Then
    blg_dm = "0001"
    ElseIf blg = "0" Then
    blg_dm = "0000"
    Else:
    blg_dm = ""
    End If
    cclLg(j) = blg_dm
    Next j
    ztG_dm1 = cclLg(1) + cclLg(2) + cclLg(3) + cclLg(4) + cclLg(5) + cclLg(6)
    Text5 = ztG_dm1
    End Function
    以上代码都为实用的工控机的2-16和16-2的进制转换函数,你可修改后用于你的需要,我是解决24设备状态的转换用的.
      

  2.   

    上述2-16转换是32位二进制用于控制现场32个设备的,其中fasong()数组为0或1状态.
      

  3.   

    '16进制数转为二进制需通过编程解决 , 以下给出VB的代码:
    Option Explicit
    Dim bl As String * 1
    Dim ccl(3) As String
    Dim ccll(3) As String
    Dim bl_dm As String
    Dim zt_dm1 As String
    Dim I As Integer
    Dim j As Integer
    Dim bll As StringPrivate Sub Command1_Click()
    bll = InputBox("输入16进制数")
    Call hex_bin
    End SubPublic Function hex_bin()
    For I = 1 To 2
    ccl(I) = Mid(bll, I, 1)
    Next I
    For j = 1 To 2
    bl = ccl(j)
    If bl = "F" Then
    bl_dm = "1111"
    ElseIf bl = "E" Then
    bl_dm = "1110"
    ElseIf bl = "D" Then
    bl_dm = "1101"
    ElseIf bl = "C" Then
    bl_dm = "1100"
    ElseIf bl = "B" Then
    bl_dm = "1011"
    ElseIf bl = "A" Then
    bl_dm = "1010"
    ElseIf bl = "9" Then
    bl_dm = "1001"
    ElseIf bl = "8" Then
    bl_dm = "1000"
    ElseIf bl = "7" Then
    bl_dm = "0111"
    ElseIf bl = "6" Then
    bl_dm = "0110"
    ElseIf bl = "5" Then
    bl_dm = "0101"
    ElseIf bl = "4" Then
    bl_dm = "0100"
    ElseIf bl = "3" Then
    bl_dm = "0011"
    ElseIf bl = "2" Then
    bl_dm = "0010"
    ElseIf bl = "1" Then
    bl_dm = "0001"
    ElseIf bl = "0" Then
    bl_dm = "0000"
    Else:
    bl_dm = ""
    End If
    ccll(j) = bl_dm
    Next j
    zt_dm1 = ccll(1) + ccll(2) ' + ccll(3) + ccll(4)
    Text1 = zt_dm1
    End Function