注册 登录
编程论坛 VB6论坛

十六进制数转换成浮点数怎么转换?其中的原理是什么?

初始元灵 发布于 2016-10-20 10:23, 10792 次点击
我想了解更深层次的原理,用笔算也能算出来。

VB怎么通过代码实现16进制转化为浮点数呢???
11 回复
#2
初始元灵2016-10-20 10:35
补充一下,32位的浮点数就可以了。

版主大大和大神们快来吖!!!!!
#3
风吹过b2016-10-20 10:43
浮点数是按二进制的 科学计数法来存储的。
需要了解并且用笔算,就百度 浮点数存储 吧。

代码转化为浮点数?啥意思?
如果是一个浮点数存储模式 解析为 整数, 使用 内存复制 到对应的数据类型的变量中去就是了。


#4
pengzhanggui2016-10-20 10:56
给你这个做参考吧,26进制的。

Private Function Transform26Hex(Value As Long) As String 'add by chris 20130308
Dim strResult As String
Dim strRemainder As Long
Dim strRounded As Long
Dim StrArray()
StrArray = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P")
  Do While Value > 0
        strRemainder = Value Mod 26
        If strRemainder = 0 Then
            strRemainder = 26
            strResult = StrArray(strRemainder - 1) & strResult       ''Chr(strRemainder + 64) & strResult '- 1
        Else
            strResult = StrArray(strRemainder) & strResult
        End If
        Value = (Value - strRemainder) / 26
  Loop
    Transform26Hex = strResult

   
End Function
#5
初始元灵2016-10-20 11:03
回复 3楼 风吹过b
好的,我去搜一下。

我是想把16进制数转化成浮点数,我要的显示的数据是浮点数。

我还用计算器算了下,得出来的数是对的,但是我不知道具体VB代码咋写。。
#6
xzlxzlxzl2016-10-20 11:03
没那么复杂吧,只需建立一个double类型数,把数据用copymemory拷贝进该数据所在内存即可。
#7
初始元灵2016-10-20 11:14
回复 4楼 pengzhanggui
请问下 数组那里用引号是啥意思?
#8
初始元灵2016-10-20 11:41
算现在会算了,不会写代码。。。
#9
pengzhanggui2016-10-20 11:43
回复 7楼 初始元灵
调试一下程序,理解下
#10
风吹过b2016-10-20 16:29
临时写的代码,不作解释了
程序代码:
Type Ltype
    l As Long
End Type

Type Ftype
    f As Single
End Type

Public Function HEXtoSingle(H As String) As Single
Dim s As String         '中间变量
Dim l As Ltype          '二个是lset命令要求的参数格式
Dim f As Ftype

s = "&H" & H            '生成中间变量
l.l = Val(s)            '转十进制

LSet f = l              '把整数复制到浮点数中
HEXtoSingle = f.f       '返回该代码对应的浮点数

End Function
#11
初始元灵2016-10-24 16:59
回复 10楼 风吹过b
哎呀,没看到没看到。。

我粘贴去研究研究,但是为啥要定义两个结构体呢?是代码风格吗?
#12
风吹过b2016-10-24 19:57
定义两个结构是使用 LSET 命令要求的,所以要定义二个结构。
使用 LSET 是不愿去使用 API 命令复制内存。

1