各位大侠,来急救啊,在线等啊,最后的分数了
问题描述:10进制数值518
接收用的 byte数组 data(0)=16进制 02 data(1)=进制 06
和起来就是0206
但是对接收的数据处理的时候,VB默认的把data(1)这样的数值,从unicode转换为了单个byte表示,上面的数值 就变成了 26 ,结果就得到错误数值了
而如果是 02 16 ,VB就识别为unicode,处理就能得到正确结果
各位大侠,这个应该怎么作啊
在下初学VB,各位路过的好人来急救啊
[解决办法]
你接收到的本来就是十进制数,何苦再转换成16进制,然后又再转换为10进制.
按我理解你的题意,写了一段代码.
Function Data1andData2(data1 As Byte, data2 As Byte) As Long
Dim tmp As Long
tmp = 256
tmp = tmp * data1 + data2
If tmp > 32768 Then tmp = tmp - 65536
Data1andData2 = tmp
End Function
'再写一段测试程序
Private Sub Command1_Click()
Dim data(2) As Byte
Dim tmp As Long
'测试组一
data(0) = 2
data(1) = 6
tmp = Data1andData2(data(0), data(1))
Debug.Print "data(0)=2, data(1)=6 时 "; tmp
'测试组二
data(0) = &H2
data(1) = &H6
tmp = Data1andData2(data(0), data(1))
Debug.Print "data(0)=&H2, data(1)=&H6 时 "; tmp
'测试组三
data(0) = &HFF
data(1) = &HEA
tmp = Data1andData2(data(0), data(1))
Debug.Print "data(0)=&HFF, data(1)=&HEA 时 "; tmp
'测试组三
data(0) = 208
data(1) = 186
tmp = Data1andData2(data(0), data(1))
Debug.Print "data(0)=208, data(1)=186 时 "; tmp
End Sub
运行结果:
data(0)=2, data(1)=6 时 518
data(0)=&H2, data(1)=&H6 时 518
data(0)=&HFF, data(1)=&HEA 时 -22
data(0)=208, data(1)=186 时 -12102