第1个回答 2019-08-24
首先,建议你用
空格
把所有要发送的
字符
分隔开来,如果你想发一个“FF920C8549023572........a807a”,你知道是第一个字节应该发"0F"和还是"FF"呢?“F
F9
20
C8...”这样就容易的多了。
以下是按
你的要求
写的
程序
,如果输入使用空格隔开,
注释
掉一句话即可。
Const
sHexDef
As
String
=
"0123456789ABCDEF"
Dim
sChr
As
String
Dim
iHex
As
Long
Dim
iLev
As
Long
'记录当前是低位还是高位,0位换字节
Dim
iVal
As
Long
Dim
i
As
Long
Dim
iIndex
As
Long
a
=
Text1.Text
iIndex
=
0
a
=
Trim(a)
If
Len(a)
Mod
2
>
0
Then
a
=
"0"
&
a
'连续输入内容,例如"FFADFAE",需使用
这句话
,用以判断开头的“0F”问题;若使用“0F
FF
FA
03”之类的格式,需注释掉这行
a
=
a
&
"
"
For
i
=
1
To
Len(a)
sChr
=
VBA.Mid(a,
i,
1)
iHex
=
InStr(sHexDef,
sChr)
If
iLev
=
2
Or
iHex
=
0
Then
iLev
=
0
ReDim
Preserve
b(iIndex)
b(iIndex)
=
iVal
iVal
=
0
iIndex
=
iIndex
+
1
End
If
If
iHex
>
0
Then
iLev
=
iLev
+
1
iVal
=
iVal
*
16
+
(iHex
-
1)
End
If
Next
i