| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖
标题:请教各位老师个问题,如何将数子(浮点数)与四字节数相互转换 例如1.0 转四 ...
只看楼主 加入收藏
fanghui2021
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-9-25
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:3 
请教各位老师个问题,如何将数子(浮点数)与四字节数相互转换 例如1.0 转四字节数为 80 3F
请教各位老师个问题,如何将 浮点数与四字节数相互转换
 例如
1.0 四字节数: 00 00 80 3F
1.11 四字节数:7B 14 8E 3F
1.2 对应为:9A 99 99 3F
2.0 对应为:00 00 00 40
3.0 对应为:00 00 40 40
4.0 对应位:00 00 80 40

以上是我从网上找了一个“C语言浮点数《-》四字节16进制数” 的软件算出来的
搜索更多相关主题的帖子: 字节 浮点数 转换 对应 老师 
2021-10-24 11:53
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:112
专家分:324
注 册:2021-10-23
收藏
得分:30 
可能有点偏差,自己改改,这个在其它语言就是一个强类型转换
CLEAR
?TRANSFORM(Test(1.0),"@0x")
?TRANSFORM(Test(1.11),"@0x")
?TRANSFORM(Test(1.2),"@0x")
?TRANSFORM(Test(2.0),"@0x")
?TRANSFORM(Test(3.0),"@0x")
?TRANSFORM(Test(4.0),"@0x")
FUNCTION Test(nNum As single) As integer
   LOCAL Tmp1, Tmp2, Tmp3
   DO CASE  
      CASE  nNum < 0
         Tmp1 = 0x80000000
         nNum = -nNum
      CASE nNum > 0
         Tmp1 = 0
      OTHERWISE
         RETURN 0
   ENDCASE
   Tmp2 = FLOOR(LOG(nNum) / LOG(2))
   Tmp3 = (nNum - 2 ^ Tmp2) * 2 ^ (23 - Tmp2)
   RETURN BITOR(Tmp1,BITLSHIFT(Tmp2 + 127,23),Tmp3)
End Function

或使用Dll,见附件
Test.rar (10.5 KB)

CLEAR
DECLARE integer F2I IN TestDll single
?F2I(1.0),TRANSFORM(F2I(1.0),"@0x")
?F2I(1.11),TRANSFORM(F2I(1.11),"@0x")
?F2I(1.2),TRANSFORM(F2I(1.2),"@0x")
?F2I(2.0),TRANSFORM(F2I(2.0),"@0x")
?F2I(3.0),TRANSFORM(F2I(3.0),"@0x")
?F2I(4.0),TRANSFORM(F2I(4.0),"@0x")

CLEAR DLLS "F2I"

[此贴子已经被作者于2021-10-24 15:31编辑过]

2021-10-24 15:26
fanghui2021
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-9-25
收藏
得分:0 

谢谢老师,非常感谢,真是太厉害了,这么短短几行代码就解决了,非常感谢!
2021-10-24 15:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:0 
VFP使用指针有点不方便,否则用指针指向数据地址就可以获取内存数据。
试用API看看可否
DECLARE LONG sscanf IN msvcrt string@,string@,string@
?float_hex(1.0)
?float_hex(1.11)
?float_hex(1.2)
?float_hex(2.0)
?float_hex(3.0)
?float_hex(4.0)
RETURN

FUNCTION float_hex(f)
    LOCAL pf
    f = TRANSFORM(f)+" "
    pf = SPACE(4)
    sscanf(@f,"%f",@pf)
    RETURN STRCONV(pf,15)
ENDFUNC

[此贴子已经被作者于2021-10-24 18:37编辑过]

2021-10-24 18:33
快速回复:请教各位老师个问题,如何将数子(浮点数)与四字节数相互转换 例如1. ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028474 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved