登录
首页 DCS论坛 科远自动化
回帖 发帖
正文

主题:VB字节数组,转成浮点数

点击:1436 回复:5

---------------------------------------------
VB字节数组,转成浮点数嘿嘿,还可以吧
fareasy.taobao.com
---------------------------------------------
Public Function BIN_to_DEC(ByVal Bin As String) As Long
Dim i As Long
   For i = 1 To Len(Bin)
       BIN_to_DEC = BIN_to_DEC * 2 + Val(Mid(Bin, i, 1))
   Next i
End Function
Public Function DEC_to_BIN(Dec As Long) As String
   DEC_to_BIN = ""
   Do While Dec > 0
       DEC_to_BIN = Dec Mod 2 & DEC_to_BIN
       Dec = Dec \ 2
   Loop
End Function
Private Sub Form_Load()
Dim B As Single
Dim Data(3) As Byte
Dim zhengfu As Integer
Data(0) = &H42 '
Data(1) = &HE4
Data(2) = &H80
Data(3) = &H0
'42E48000 = 114.25
'第一步 , 化为2进制
'0100 0010 1110 0100 1000 0000 0000 0000
'第二步:因为IEEE754使用1个符号,8个阶码,23个尾数,我们分别在上面提取这些内容.
'符号:第一位:0 表示正数
If Data(0) / 128 >= 1 Then
zhengfu = -1
Else
zhengfu = 1
End If
'阶码:2-9位:10000101 为133,实际的幂值为133-127=6
jiema = (Data(0) Mod 128) * 2 + Int(Data(1) / 128) - 127
'尾数:10-32位:11001001000000000000000,实际值为1.11001001 (1+尾数)
'weishu = (Data(1) Mod 128) * 256 * 256 + Data(2) * 256 + Data(3) '小数转数据方式?
Dim weishu As String
weishu = "1" + Format(DEC_to_BIN(Data(1) Mod 128), "0000000") + Format(DEC_to_BIN(Data(2) + 0), "00000000") + Format(DEC_to_BIN(Data(3) + 0), "00000000")
     
'第三步: 根据公式写出实际数值大小
'为1110010.01,化为十进制为:114.25
result = zhengfu * BIN_to_DEC(weishu) / (2 ^ (15 - jiema))
End Sub
[/URL]
13-11-30 20:51
这个我得学习下。
13-11-30 23:59
这个学习一下啊
14-01-08 10:12
努力做项目用上了
22-09-20 20:42
学习一下,谢谢分享
22-12-06 13:38
努力做项目用上了
23-11-07 15:27

工控新闻

更多新闻资讯