数据转换问题 这是一个老问题了,就是将一个double型的数据转换成 byte型来存贮,需要的时候又将byte还原成double型的数据,要求转化回来的数据和原来的double型数据一致. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转换成1个byte?强制转换,但是容易发生数据失真。多个byte?也是强制转换成byte型指针,然后把内存中的byte一个一个存储起来,或者直接存储double即可。double d = 1.234;BYTE* p = (BYTE*)&d;for (int i=0; i<sizeof(double); i++) SaveByte(p[i]); BYTE b[4];double db;memcpy(db, b, 4);memcpy(b, db, 4); double型数据要占8字节,可以用一个长度为8的BYTE型数组来储存,例如:double d1, d2;BYTE b[8];d1 = 1.234;d2 = 0;(double&)b = d1;d2 = (double&)b;这段代码可能不太容易理解,自己调试看一下就明白了。 这个好像没必要转换吧,直接存成double类型,需要byte时再转换不就可以? double score=89.123456; char byte[8]; memcpy(byte,&score,8); double so; memcpy(&so,byte,8); cout<<so<<endl; double score=89.123456; char byte[8]; memcpy(byte,&score,8); double so; memcpy(&so,byte,8); printf("%8.6lf", so); union double2byte{ double dbVal; BYTE byteVal[8];}D2B;D2B d2b;d2b.dbVal = 1.0000001;d2b.byteVal[i]; double类型转换成byte型存储不是什么问题,主要的问题是显示问题吧?double类型的打印一直是提问比较多的问题 赫赫,最简单办法:!声明公用体(根据操作系统平台16? 32? 64位?)union uData{ byte bList[8]; double dData;}; 寸在一个byte[]里。每4个数组元素保存一个double。 大家好,很高兴大家在这里给的一些建议和一起学习。先谢大家可能我的题目说得不够清楚现在再重复一下:如何将一个double型的数据拆分为八个字节的数组,然后如何将八个字节型的数组合并成一个double型的数据? 提醒:平台上面没有byte类型,关键是要分了之后还要还原成double型,大家再帮忙想想 选中一段字,只改变这段子的颜色和背景,这是如何做到的? 类型库struct对齐方式问题 ATL ActiveX 如何实现自定义消息通过SendMessage传给窗口线程处理 问一个截图问题 请问如何在调用局域网其他机器上的数据库时,输入共享账户密码 listbox的一些问题 读取文件 如何利用MSComm控件传送文件的例子 我不小心在vc的build->configuration中把release给remove,现在想编译成release版的,怎么办啊?救救我!! 对HRESULT的疑惑! 制作E-Mail问题 关于CDHtmlDialog加载资源中的图像文件的问题 vc编译出错
多个byte?也是强制转换成byte型指针,然后把内存中的byte一个一个存储起来,或者直接存储double即可。double d = 1.234;
BYTE* p = (BYTE*)&d;
for (int i=0; i<sizeof(double); i++)
SaveByte(p[i]);
double db;
memcpy(db, b, 4);
memcpy(b, db, 4);
double d1, d2;
BYTE b[8];
d1 = 1.234;
d2 = 0;
(double&)b = d1;
d2 = (double&)b;
这段代码可能不太容易理解,自己调试看一下就明白了。
char byte[8];
memcpy(byte,&score,8); double so;
memcpy(&so,byte,8);
cout<<so<<endl;
char byte[8];
memcpy(byte,&score,8); double so;
memcpy(&so,byte,8);
printf("%8.6lf", so);
{
double dbVal;
BYTE byteVal[8];
}D2B;
D2B d2b;d2b.dbVal = 1.0000001;
d2b.byteVal[i];
声明公用体(根据操作系统平台16? 32? 64位?)
union uData{
byte bList[8];
double dData;
};
先谢大家
可能我的题目说得不够清楚
现在再重复一下:
如何将一个double型的数据拆分为八个字节的数组,然后如何将八个字节型的数组合并成一个double型的数据?
平台上面没有byte类型,关键是要分了之后还要还原成double型,大家再帮忙想想