标题:请教各位老师个问题,如何将数子(浮点数)与四字节数相互转换 例如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: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册: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
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507276-1-1.html




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

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