whj19860123 发表于 2010-9-13 09:32:16

VB高手们帮我分析下这个result的作用

Label3.Caption = CStr(CDbl(result(BYTE_input(3), BYTE_input(4), BYTE_input(5), BYTE_input(6))))
这句话作用就是将4个字节的数据转换成浮点数,以字符的形式显示出来,可是result这个关键字在VB6.0帮助文件里找不到,哪位高手指点下

whj19860123 发表于 2010-9-13 09:46:31

ublic Function result(ByVal b1, b2, b3, b4 As Byte) As Single
Dim E As Integer            '
Dim weishu As Long
Dim BX1, BX2 As Byte
Dim E2 As Double
E2 = 1
If b1 = 0 Then
result = 0
Else
If b1 > &H80 Then
    BX1 = b1 - &H80
Else
    BX1 = b1
End If
E = BX1 * 2
If (b2 - &H80) < 0 Then
    BX2 = b2 + &H80
Else
    BX2 = b2
    E = E + 1
End If
E = E - 127 - 23
weishu = CLng(BX2) * 256 * 256 + CLng(b3) * 256 + CLng(b4)
E2 = 2 ^ E
result = CSng(CSng(weishu * E2))
If b1 - &H80 > 0 Then
    result = 0 - result
End If
End If
End Function

whj19860123 发表于 2010-9-13 13:38:35

E = E - 127 - 23
weishu = CLng(BX2) * 256 * 256 + CLng(b3) * 256 + CLng(b4)
E2 = 2 ^ E 这几句看不懂谁能分析下

favr 发表于 2010-10-6 13:14:57

这个不是VB高手可以解决的问题吧?这个涉及到一个浮点数用机器码如何表示的问题,这是平台(OS)相关的。
反过来说,写result函数的水平可能够高,但有些事也没必要完全按原理来,其实有简单的解决方法:如果4个比特型的输入参数是一个单精度浮点数的字节序列,那么,使用简单的CopyMemory API就可以完成“类型转换”,把4个字节的Byte数组转为一个Single。
页: [1]
查看完整版本: VB高手们帮我分析下这个result的作用