关于如何将浮点类型的数据写入或读出文件的操作
2010-09-20 16:09
603 查看
写入操作用write(fd, vec_info, 26000000);
注:vec_info为一个内存块的首地址,此内存块共26000000字节,可以分解成13Byte*200万条记录,每条记录就是一个结构体,
此内存块的首地址就是第一条记录的地址,结构体内容如下:
typedef struct record{
uchar mac_addr[4];
float balance;
int time;
char vec_status;
}__attribute__((packed)) record_t;
取浮点数过程如下:
float balance;
ret = read(fd, buffer, 13); //读取一条记录,每条记录13字节
memcpy(&balance, buffer+4, 4); //从浮点数起始位置开始取4个字节,因为float占4Byte
这样就能成功取出了。
在此之前取浮点数总是出错,原因如下:
1buffer为char型的数,人为的将此4字节取出合并为一个float型,这样得出的结果是错的
2 或者将buffer中的4字节取出,放到一个char型数组中如:char aa[4],然后对其进行如下操作:atof(aa), 这样也是错的。
切记。。。。
注:vec_info为一个内存块的首地址,此内存块共26000000字节,可以分解成13Byte*200万条记录,每条记录就是一个结构体,
此内存块的首地址就是第一条记录的地址,结构体内容如下:
typedef struct record{
uchar mac_addr[4];
float balance;
int time;
char vec_status;
}__attribute__((packed)) record_t;
取浮点数过程如下:
float balance;
ret = read(fd, buffer, 13); //读取一条记录,每条记录13字节
memcpy(&balance, buffer+4, 4); //从浮点数起始位置开始取4个字节,因为float占4Byte
这样就能成功取出了。
在此之前取浮点数总是出错,原因如下:
1buffer为char型的数,人为的将此4字节取出合并为一个float型,这样得出的结果是错的
2 或者将buffer中的4字节取出,放到一个char型数组中如:char aa[4],然后对其进行如下操作:atof(aa), 这样也是错的。
切记。。。。
相关文章推荐
- u07s07 - 关于对象中的静态数据成员如何写入到文件?
- 如何从网页上读取数据,将数据写入文件和读出
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- C#文件基本操作3-文本数据写入读出演示
- android中bluedroid如何读取pcm数据,并将其写入文件中?
- 如何在文件末尾写入新数据(2011-12-23 15:49:50)
- mybatis如何操作text类型(mysql)数据呢?
- C语言中文件操作--如何将文本数据正确读到字符串数组中
- 关于数据类型是浮点数的二分法
- 将任意类型的数据写入到文件中
- [例题]VB操作Excel (1)[用VB创建一个xls文件][并向里面写入一个数据]
- 基本数据类型,文件操作
- 关于MysQL中写入日期类型数据失败的问题
- 文件操作写入和读出结构体--修改文件信息
- win2003如何为共享文件所在的磁盘进行配额保障数据正常写入
- IO操作 创建一个文件并写入一些文字数据
- 关于Donews的记忆---如何编写自定义函数GetItemAny,使其能从任何数据类型里取值
- android OutputStream向sd卡中文件写入操作立即关机数据清0问题
- 关于数据如何从物理虚拟地址转到文件虚拟地址