Dim totalbt() As Byte
Dim lsize As Long
Dim TotalS As String
'以上为模块级变量'以下在过程里,其中bt()为过程级byte数组,负责接收串口数据
ReDim Preserve totalbt(lsize - 1) As Byte
rtlCopyMemory totalbt(lsize - lc), bt(0), Len(bt(0)) * lc 'API 函数'转换字符串
TotalS = StrConv(totalbt, vbUnicode)问题是totalbt() 原来是一位数组,现在由于多路数据的需要,要改为二维,其中第一维用于标志那一路数据,第二维负责接收byte数据,然后再转换为字符串,代码该怎么改?望各位大侠赐教!

解决方案 »

  1.   

    不懂你是什么意思?
    譬如 a(3,4) 第一维是3 第二维是4 你说的“第一维用于标志那一路数据,第二维负责接收byte数据”是什么意思?
      

  2.   

    不好意思,说得不太明白。事实上,现在的问题就集中在StrConv(totalbt, vbUnicode)
    上,在完成byte数组转换字符串功能时totalbt是一个一维数组,现在有一个二维数组例如:a(0,0-n),其中0-n就存储着原来totalbt的数据,详细说:totalbt(0)=10,totalbt(1)=23,……
    那么a(0,0)=10,a(0,1)=23,……。所以怎么解决快速提取第二维的数据(即(0,0-n)并转换为字符串。
      

  3.   

    你这样做效率肯定低,而且很麻烦,因为字符串的长度不等。(如果等的话就好了,把a(0,0-n)改成a(0-n,0),直接调用把数据拷过去)建议你做一个结构
    type a
       b'标识
       c'字符串地址
    end type
      

  4.   

    楼主说得不太明白,我理解是不是这样:
    type a 
      totalbt() as byte
    end type
    '这里只用定义一个数据类型
    dim B(n) as a   '用n来标识数据来路ReDim Preserve b(0).totalbt(lsize - 1) As Byte
    rtlCopyMemory b(0).totalbt(lsize - lc), bt(0), Len(bt(0)) * lc 'API 函数'转换字符串
    TotalS = StrConv(b(0).totalbt, vbUnicode)