VB 如何将十六进制字符串转为同内容十六进制byte数组?

我想将文本框中输入的十六进制字符串转化为byte()类型,以便通过串口发送给单片机。举个例子,我在text1中输入内容“1A”,通过程序转换为byte型数组1A,然后通过... 我想将文本框中输入的十六进制字符串转化为byte()类型,以便通过串口发送给单片机。
举个例子,我在text1中输入内容“1A”,通过程序转换为byte型数组1A,然后通过串口发送出去。
text中输入最大十六进制字符串是“FFFF”,按照两个一组转换。假如输入的是"F",则转成0F;输入是"FF"转为FF;输入是"FFF"则转为0FFF。

程序是这样的:
dim a as string
dim b() asbyte
a=tex1.text
{插入将字符串转为数组的语句}
MSComm1.Output = b
展开
 我来答
cd68001
2010-10-20 · TA获得超过4229个赞
知道小有建树答主
回答量:976
采纳率:66%
帮助的人:347万
展开全部
首先,建议你用空格把所有要发送的字符分隔开来,如果你想发一个“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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式