关于Array of byte 转换 Float 问题

tianjin 2012-11-04 11:40:07
var
a: array[0..3] of byte;
b: Single;
begin
a[0] := $00;
a[1] := $00;
a[2] := $FA;
a[3] := $44;
b := PSingle(@a)^;
showmessage(FloatToStr(b));
end;
上面显示为2000 正确



var
a: array of byte;
b: Single;
begin
SetLength(a, 4);
a[0] := $00;
a[1] := $00;
a[2] := $FA;
a[3] := $44;
b := PSingle(@a)^;

showmessage(FloatToStr(b));
end;
显示为1.9817325433e-38 错误的

为什么会出现这样的结果,我需要动态设置数组长度,要正确的结果,应该怎么写,谢谢大侠们。
...全文
246 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsfzxjy 2012-11-05
  • 打赏
  • 举报
回复
楼上正解 。。。。。
tianjin 2012-11-05
  • 打赏
  • 举报
回复
谢谢大家的帮助,长知识了,非常感激
Scinyeah 2012-11-05
  • 打赏
  • 举报
回复
楼上正解……
kaikai_kk 2012-11-05
  • 打赏
  • 举报
回复
b := PSingle(@a)^; 改成 b := PSingle(@a[0])^;
ffwin 2012-11-05
  • 打赏
  • 举报
回复
SQLDebug_Fan 2012-11-05
  • 打赏
  • 举报
回复
动态数组的名字不是内存的首地址,固定数组是,所以用kaikai_kk的方法可以。

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧