很傻的问题,但是难住小弟了。
因为要进行位操作,就是判断二进制下某几位是0还是1。
源数据是从串口传来的b(1,4)=Hex(InByte(i))
现在试图用d(1,4)=?(b(1,4))
结果找不到能用的函数,用bin出错。
多谢诸位!!!

解决方案 »

  1.   

    逐位用and:
    Option ExplicitPrivate Sub Command1_Click()
        Dim i As Long
        i = 1234
        Dim j As Long
        Dim s As String
        Dim binstr As String
        Do While 2 ^ j <= i
            If (i And 2 ^ j) = 2 ^ j Then
                s = "1"
            Else
                s = "0"
            End If
            binstr = s + binstr
            Debug.Print CStr(i) + "的右数第" + CStr(j + 1) + "位为:" + s
            j = j + 1
        Loop
        MsgBox CStr(i) + "的2进制表示为:" + binstr
    End Sub
      

  2.   

    Function hextoBin(X As String) As String
    Const Bins = "0000000100100011010001010110011110001001101010111100110111101111"
      Dim i As Integer, s As String
     s = ""
      For i = 1 To Len(X)
     s = s + Mid(Bins, (Val("&h" + Mid(X, i, 1)) * 4 + 1), 4)
      Next
      hextoBin = Format(s, "0")
    End FunctionPrivate Sub Command1_Click()
    MsgBox hextoBin("A4")
    End Sub