请问高手们:我想把两个不定长度的byte数组相加,结果保留到第三个不定长度的byte数组中,请问怎么实现呢???

解决方案 »

  1.   

    Sub Main()
        Dim ary1() As Byte
        Dim ary2() As Byte
        Dim ary3() As Byte
        Dim i As Long
        
        ReDim ary1(2)
        ary1(0) = 1
        ary1(1) = 2
        ary1(2) = 3
        
        ReDim ary2(1)
        ary2(0) = 10
        ary2(1) = 20
        
        ary3 = CStr(ary1) & CStr(ary2)
        For i = 0 To UBound(ary3)
            Debug.Print i, ary3(i)
        Next
    End Sub
      

  2.   

    我的意思是数组的连接,对不起
    比如第一个是 00 0a 1a c3   第二个是  9a 6b 31 34 55 81 3e得到的数组是  00 0a 1a c3 9a 6b 31 34 55 81 3e
      

  3.   

    Function BYTES(ByRef BYTE1() As Byte, ByRef BYTE2() As Byte)
    Dim B() As Byte, MAX As Integer
    MAX = UBound(BYTE1)
    ReDim B(MAX)
    B = BYTE1
    Dim I As Integer
    For I = 0 To UBound(BYTE2)
    MAX = MAX + 1
    ReDim Preserve B(MAX)
    B(MAX) = BYTE2(I)
    Next
    BYTES = B
    Erase BEnd FunctionPrivate Sub Command1_Click()
    Dim X As String, Y As String, A() As Byte, B() As Byte, C() As Byte
    X = "1234"
    Y = "ABCD"
    A = StrConv(X, vbUnicode)
    B = StrConv(Y, vbUnicode)
    C = BYTES(A, B)
    MsgBox StrConv(C, vbFromUnicode)
    End Sub
    最好用copymemory API 函数
      

  4.   

    如果很大的话,最好用copymemory
      

  5.   

    '声明(模块中用Public,窗体中改为private)
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)'调用
    ReDim abyte3(UBound(abyte1) + UBound(abyte2) + 1) As Byte
    Call CopyMemory(abyte3(0), abyte1(0), UBound(abyte1) + 1)
    Call CopyMemory(abyte3(UBound(abyte1) + 1), abyte2(0), UBound(abyte2) + 1)
      

  6.   

    Tiger_Zhao(VB老鸟)的是对的,只是转换为字符串再连接效率比较低;
    但如果数组不是很大,完全可以了
      

  7.   

    严重同意老鸟
    也严重同意木头人老鸟的办法应该学会,是纯VB方案,速度不算慢,且最方便,不用任何计算。它充分利用了BSTR字符串的特点,BSTR字符串不象LPSTR那样以\0结束,它可包含任意一个字节。CopyMemory在Byte数组越大时,速度优势越明显,我测试了一下,连接30000字节长数组,CopyMemory比直接连快7倍。但正如viena所说,对于小数组,还是直接连方便。