问题如下:有一个变量数组A(7) AS LONG,A(0)~A(8)的数值要么为0,要么为1,现在的要求是根据这8个数值,生成一个字节,A(0)为这个字节的最高位,A(7)为这个字节的最低位。请问如何处理。

解决方案 »

  1.   

    Dim A(7) As Long
        Dim b As Byte
        b = A(0) * 2 ^ 7 + A(1) * 2 ^ 6 + A(2) * 2 ^ 5 + A(3) * 2 ^ 4 + A(4) * 2 ^ 3 + A(5) * 2 ^ 2 + A(6) * 2 ^ 1 + A(7) * 2 ^ 0
    或者用循环。
      

  2.   


        Dim A(7) As Long
        Dim b As Byte
        Dim i As Long    For i = 0 To 7
            b = b + A(i) * 2 ^ (7 - i)
        Next
      

  3.   

    如果先根据其值生成字符串,而后再将此字符串生成BYTE,能做到吗?
    部分代码如下:  Dim B As String, b As Byte, i As Integer, td(7) As Integer, hex1 As Byte
      
      B = ""
      A(0) = 1
      A(1) = 0
      A(2) = 0
      A(3) = 1
      A(4) = 0
      A(5) = 1
      A(6) = 0
      A(7) = 1
      
      For i = 0 To 7
        If A(i) = 0 Then
           B = B & "0"
        Else
           If (i) = 1 Then
             B = B & "1"
           End If
        End If
      Next请完善后面的代码。
      

  4.   

    Dim mByte() As Byte     '字节数组
    Dim str As String       '字符串
    str = "01010101"'字符串->字节数组
    mByte = StrConv(str, vbFromUnicode)
      

  5.   

    二,三楼的办法可能最简单了
    保险一点的办法这样处理,防止这个A(I)当中出现别的数字    Dim A(7) As Long
        Dim b As Byte
        Dim i As Long
        For i = 0 To 7
            b = b + IIf(A(i)>0, 1, 0) * 2 ^ (7 - i)
        Next