首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

各位大侠,来急救啊最后的分数了

2012-01-10 
各位大侠,来急救啊,在线等啊,最后的分数了问题描述:10进制数值518接收用的byte数组data(0)16进制02data(1

各位大侠,来急救啊,在线等啊,最后的分数了
问题描述: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

热点排行