Sub Test()
'测试过程
Dim i&, arr&(), strtemp$
strtemp = " 70 03 01 11 00 00 00 02 06 02 01 00 00 00 00 00 03 11 00 00 00 00 00 04 01 00 00 01 05 02 05 11 00 00 00 00 04 06 11 00 00 00 00 00 07 01 00 00 00 01 02 08 01 00 00 00 02 06 09 01 00 00 00 01 05 0A 11 00 00 00 00 00 01 7F "
arr = ExchStr(strtemp)
For i = 0 To UBound(arr)
Debug.Print "COM"; i + 1, arr(i)
Next
End Sub
Function ExchStr(ByVal strData$) As Long()
'转换处理过程
'楼主自己保证传入的参数格式正确吧,我就不再写冗余的容错处理了
Dim lSeg&, lArrRes&(), lTemp&
Dim lSign&, lArrModu&(1 To 5), i&, j&
strData = Trim$(strData): lTemp = Len(strData) - 11
lArrModu(1) = 10000&: lArrModu(2) = 1000&: lArrModu(3) = 100&
lArrModu(4) = 10&: lArrModu(5) = 1&
lSeg = lTemp \ 21: ReDim lArrRes(0 To lSeg - 1)
lSeg = 0
For i = 10 To lTemp
If (Val(Mid$(strData, i, 2)) = 11) Then
lSign = -1
Else
lSign = 1
End If
j = 0: lTemp = 0
While (j < 5)
i = i + 3: j = j + 1
lTemp = lTemp + Val(Mid$(strData, i, 2)) * lArrModu(j)
Wend
lArrRes(lSeg) = lTemp * lSign
lSeg = lSeg + 1: i = i + 5
Next
ExchStr = lArrRes
End Function