delphi中如何将十进制整数转换成单精度的浮点数呢? ( 积分: 50 )

  • 主题发起人 主题发起人 cnmir
  • 开始时间 开始时间
C

cnmir

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说 10 转换成16进制浮点数后就是41200000
15 转换成16进制浮点数后就是41700000
20 转换成16进制浮段数后就是41A00000

上面的数据我是通过一个计算工具计算的,不知道他是怎么算出来的。

这里有张图片大家可以帮忙看一下。http://www.cnmir2.com/test.jpg

有谁能告诉我一下呢,感谢阿。
 
比如说 10 转换成16进制浮点数后就是41200000
15 转换成16进制浮点数后就是41700000
20 转换成16进制浮段数后就是41A00000

上面的数据我是通过一个计算工具计算的,不知道他是怎么算出来的。

这里有张图片大家可以帮忙看一下。http://www.cnmir2.com/test.jpg

有谁能告诉我一下呢,感谢阿。
 
这是16进制么?
IntToHex ,呵呵。。。
 
这个是经过处理的,估计是加密的吧
 
IntToHex(20,8)//=00000014;楼主的结果不是十进制整数转换成16进制,是加密字符串.
 
搂主想要加密的话 推荐LockBox这套控件
 
晕各位大哥,这个是单精度浮点数转换的呀
十进制数10转换成浮点数后然后以16进制方式显示就是41200000
不知道是怎么转换的
 
http://www.cnmir2.com/test.jpg
可以看一下这个图片
 
这个很简单的,你查一下IEEE754的标准(你的这个应该是这个标准的)
写个算法就可以转换了,你的这个结果和我的是一样的
 
大家理解错了,不是整形转而是浮点数
 
我就是想知道怎么才能让那个41200000显示在edit中呢?
 
建议:
1。关于“怎么才能让那个41200000显示在edit中呢? ”,查看edit的使用帮助
2。关于如何算出"41200000",查看浮点数(32位的)的资料,知道32位里面某位是符号位,某几位是指数位,某几位是尾数部分。
3。明白一些位操作的概念,如shr,shl
4。这些都明白了就自己尝试写转换函数,鉴于此类转换都跟不同标准有关所以贴了代码的话你会更加糊涂,应该先明白上面所说的第 2 点最重要
 
delphi我这样写
var
i:integer
g:single
begin
i:=10;
g:=i;
这样g是不是就自动被转换成41200000呢,不知道如何让她转换成str了
 
-----------------------------------------------------------------------
值     存储为                     指数偏移量
real*4   1位符号位(s)、8位指数(e),23位尾数(m,共32位)  127(7FH)
real*8   1位符号位(s)、11位指数(e),52位尾数(m,共64位) 1023(3FFH)
real*10  1位符号位(s)、15位指数(e),64位尾数(m,共80位) 16383(3FFFH)
-----------------------------------------------------------------------

计算公式:
V=(-1)^s*2^E*M
当e(各位)为全'0'时,E=1-(2^(e(位数)-1)-1),;M=m。
如:real*4是8位,E=1-(2^(8-1)-1)=1-127=-126
即,
在real*4时:
V=(-1)^s*2^(-126)*m
在real*8时:
V=(-1)^s*2^(-1022)*m
当e(各位)不为全'0'且不为全'1'时,E=e(值)-(2^(e(位数)-1)-1);M=1+m。
即,
在real*4时:
V=(-1)^s*2^(e(值)-127)*(1+m)
在real*8时:
V=(-1)^s*2^(e(值)-1023)*(1+m)
 
后退
顶部