关于二进制的问题

wsansan 2003-05-13 06:33:58
从二进制文件中读入一个四个字节的俘点数例如0.125,放入一个数组中例如:

BYTE ss[4];

一个数组元素放的是一个字节,怎样从数组中ss[0],ss[1],ss[2],ss[3]还原出这个俘点数,即将数组中的俘点数赋给一个俘点变量。
...全文
69 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2003-05-14
  • 打赏
  • 举报
回复
关注!
nononono 2003-05-14
  • 打赏
  • 举报
回复
wsansan(小三), 如果你可以直接按float读最简单,如果你已经读成了4个字节,就用联合最简单:
将这4个字节存进联合中的字节数组成员,然后去读联合的float成员。联合的各成员使用同一存储空间。
GodBirdFlying 2003-05-13
  • 打赏
  • 举报
回复
直接用float 变量读取最简单!!
qibo999 2003-05-13
  • 打赏
  • 举报
回复
用联合:
union Hi
{
float a;
char b[4];//是4吗?我不知道

}

wsansan 2003-05-13
  • 打赏
  • 举报
回复
to sharkxie and nononono:
数组元素相加结果不对!
其实,并不是一个字节放一位数,而是四个字节有32位长的一个俘点数,问题是如何将四个数组元素中的一个俘点数取出。
nononono 2003-05-13
  • 打赏
  • 举报
回复
用联合最简单。
yyfzy 2003-05-13
  • 打赏
  • 举报
回复
1,要确定小数点的位置,即有几位整数
2,然后再把各位*10的-n次方(n为数组下标的相反数)
3,相加

例如:假定只有一位整数。
float s;
s=ss[0]+ss[1]*0.1+ss[2]*0.01+ss[3]*0.001;
sharkxie 2003-05-13
  • 打赏
  • 举报
回复
AnsiString cstr = ss[0] + ss[1] + ss[2] + ss[3];
float tmp = StrToFloat(cstr);

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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