字符串转换成字节数组解决办法
字符串转换成字节数组本帖最后由 bcrun 于 2013-01-30 10:31:53 编辑Dim bytInput() As ByteDim i As Inte
字符串转换成字节数组
本帖最后由 bcrun 于 2013-01-30 10:31:53 编辑
Dim bytInput() As Byte
Dim i As Integer
Dim buffer As String'这个语句是定义在通用里面的
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputMode = 1 '0:文本方式,1:二进制方式
bytInput = MSComm1.Input
For i = LBound(bytInput) To UBound(bytInput)
buffer = buffer + Hex(bytInput(i)) + Chr(32)
Text1.Text = buffer
Next i
End Select
我现在接收到的数据是68 2F 2F 68 0 2 8 32 3 0 0 0 0 0 2 0 1E 0 0 4 4 FF 4 0 8 1 0 FF 4 0 8 2 0 FF 4 0 8 7D 0 FF 4 0 40 64 0 0 0 0 0 0 0 AF 16
我现在的问题是:一、如何把这个字符串转化成字节数组
二、如何让 MSComm1收完这个长度的字符串后就清空buffer变量的值,以免数据积累下去。
多谢大家的指教
[解决办法]strconv函数处理
[解决办法]dim s as string
s = "68 2F 2F 68 0 2 8 32 3 0 0 0 0 0 2 0 1E 0 0 4 4 FF 4 0 8 1 0 FF 4 0 8 2 0 FF 4 0 8 7D 0 FF 4 0 40 64 0 0 0 0 0 0 0 AF 16"
dim datastr() as string
datastr = Split(s, " ")
dim result() as byte
redim result(lbound(datastr) to ubound(datastr))
dim i as integer
for i = lbound(datastr) to ubound(datastr)
result(i) = cbyte(val("&H" & datastr))
next
[解决办法]用Split()函数。
[解决办法]Dim str As String = "68 2F 2F 68 0 2 8 32 3 0 0 0 0 0 2 0 1E 0 0 4 4 FF 4 0 8 1 0 FF 4 0 8 2 0 FF 4 0 8 7D 0 FF 4 0 40 64 0 0 0 0 0 0 0 AF 16 "
Dim ary = str.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries).[Select](Function(t) CByte(Convert.ToInt32(t, 16))).ToList()
[解决办法]你收到的 bytInput 就是字节数组。是后续代码又转成字符串的。