16,554
社区成员
发帖
与我相关
我的任务
分享
Dim bytIn(1 To 2) As Byte
Dim num(1) As Long
Dim i As Integer
i = 0
bytIn(1) = 255
bytIn(2) = 255
If Val(bytIn(i + 1)) >= 128 Then
num(0) = -(65536 - (Val(bytIn(i + 1)) * 256 + Val(bytIn(i + 2))))
Else
num(0) = Val(bytIn(i + 1)) * 256 + Val(bytIn(i + 2))
End If
'以上代码说明此数为两字节,高字节在前,低字节在后,高字节大于等于128时表示负数,高字节小于128时表示正数。
'两字节组成的最大数正数是ffff即65535,(Val(bytIn(i + 1)) * 256 + Val(bytIn(i + 2)))最大时为65535,这时num(0)=-1
'注意bytin不会大于255(字节变量)
'其实这样说意义不大,你还是要弄明白下位机的编码格式,不然一切都是白说,因为同是一个数还可以低字节在前而高字节在后。