vb 从字符串中取特定字符串
从缓冲区读取的值第一个字节:为重量值最高位第二个字节:为重量值次高位第三个字节:为重量值低位第四个字节:辅助信息可以不做理睬因为每次读的值都是变化的,不能确定到底有几位,...
从缓冲区读取的值
第一个字节: 为重量值最高位
第二个字节: 为重量值次高位
第三个字节: 为重量值低位
第四个字节:辅助信息可以不做理睬
因为每次读的值都是变化的,不能确定到底有几位,图中显示的第一条值就是383
前三个字节每个字节都有可能有2位,我怎样才能正确提取出这个值呢
strbuffer = Left(buffer, 7),这样有的时候时候就把第4个字节的8提取出来了 展开
第一个字节: 为重量值最高位
第二个字节: 为重量值次高位
第三个字节: 为重量值低位
第四个字节:辅助信息可以不做理睬
因为每次读的值都是变化的,不能确定到底有几位,图中显示的第一条值就是383
前三个字节每个字节都有可能有2位,我怎样才能正确提取出这个值呢
strbuffer = Left(buffer, 7),这样有的时候时候就把第4个字节的8提取出来了 展开
2个回答
展开全部
你应该用 Split() 函数,按空格将字符串拆分。
例如:
Dim Str() as string
Str = Split("0 0 3 80 CE 6F", " ")
拆分的结果是一个字符串数组,你循环解析就可以了。
例如:
Dim Str() as string
Str = Split("0 0 3 80 CE 6F", " ")
拆分的结果是一个字符串数组,你循环解析就可以了。
更多追问追答
追问
你好,按照你的方法,我试了还有一点小问题,譬如说次高位有值为7,低位为7,按实际的应该是07,不过返回的值里0没显示。这样我的结果result就是77,实际值应该是707。请问有什么方法可以解决吗?
strbuffer = Split(buffer, " ")
For i = 0 To 2
result = result + strbuffer(i)
Next
追答
你这思路就不对,16进制的数怎么能直接用加法呢。
至于省略零的情况更不是问题,看下面
strbuffer = Split(buffer, " ")
result = 进制转换函数(strbuffer(0)) * 高位权值 + 进制转换函数(strbuffer(1)) * 次高位权值 + 进制转换函数(strbuffer(2)) * 低位权值
如果你使用的是BCD码,那么 进制转换函数可以省略为一个 Val()。
这里权值是指该位的基准位。
比如:将3.456表示为 03 45 60,则高位权值为1,次高0.01,低位0.0001
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询