有关VB字符串和16进制数转换问题

Dim Command As String
Dim Ask() As Byte
Command = "000F0FFF0D0A"
有上面的信息我想得到

Ask(0) = &H00
Ask(1) = &H0F
Ask(2) = &H0F
Ask(3) = &HFF
Ask(4) = &H0D
Ask(5) = &H0A

希望高手可以帮忙解答下!

dim i as long,k as long
for i=1 to len(command)\2 step 2
redim ask(k)
ask(k)="&H" & mid(command,i,2)
k=k+1
next追问

ask()是字节不是字符串,2为16进制的数字,这样好像不能实现吧!

ask(k)="&H" & mid(command,i,2)是写字符串,我看像是。测试结果如下:

CH340.Output 是串口发送数据!

追答

ask() as string

还是昨天问的那个吧
你的output不是字符串吗,为嘛要声名为byte类型呢
还有啊,我给你的for i 是1 to ,不是0开始
这个错误应该是,mid函数报的错,mid不可能是mid(str,0,2),这是不能用的

Dim sd As String
Dim Ask() As String
Dim i As Long, k As Long
sd = "000F0FFF0D0A"
For i = 1 To Len(sd) \ 2 Step 2
ReDim Ask(k)
Ask(k) = "&H" & Mid(sd, i, 2)
Debug.Print Ask(k)
k = k + 1
Next
CH340.Output = Ask

直接复制代码吧
你声名的byte输出的话,就是long型了

貌似还不对,这样输出的跳行了

Dim sd As String
Dim Ask() As String
Dim i As Long, k As Long
sd = "000F0FFF0D0A"
i = 1: k = 0
Do While k <= Len(sd) \ 2 - 1
ReDim Ask(k)
Ask(k) = "&H" & Mid(sd, i, 2)
Debug.Print Ask(k)
i = i + 2
k = k + 1
Loop
CH340.Output = Ask

用下面的

追问

太感谢你回复了,你看我原来的目的吧!

发送的Command定义是这样的 Dim Command(6) As Byte

数据发送出去以后单片机分析数据得到命令。发字符串不大好的。我写这段代码是可行的。


接下来我想增加程序的可读性

就想当VB看到“00F0F0FF0D0A”的时候会发送上述的程序实现的东西。


我尝试了你改过的程序,出现了如下问题;

先感谢一下你希望可以帮小弟解决一下我才学了1个星期多的VB

温馨提示:答案为网友推荐,仅供参考
相似回答