将二进制的数据类型转换?高分相送!!!!
我从串口提取二进制的数据,比如说一个double类型数据,因为是64位数据,所以存放在byte[8]里面。现在我又定义了一个double result;这样转化结果不对啊?
byte[8] binaryData;
double result;
CString strTemp;
strTemp.Format("%s",binaryData);
sscanf(strTemp,"%X",&result);
现在我的机子也没有MSDN,这样实现结果好像不对。大虾快点帮忙,搞分享送!!!
问题点数:100、回复次数:6Top
1 楼dingkl()回复于 2002-07-26 10:09:38 得分 40
用
memcpy(&result,binaryData,8);
如果不对,是字节顺序问题,将存入时的顺序倒过来就行了Top
2 楼lifekill1978(至高境界)回复于 2002-07-26 10:11:01 得分 20
atof, atoi, _atoi64, atol
Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).
double atof( const char *string );
int atoi( const char *string );
__int64 _atoi64( const char *string );
long atol( const char *string );
Routine Required Header Compatibility
atof <math.h> and <stdlib.h> ANSI, Win 95, Win NT
atoi <stdlib.h> ANSI, Win 95, Win NT
_atoi64 <stdlib.h> Win 95, Win NT
atol <stdlib.h> ANSI, Win 95, Win NT
Top
3 楼bleeze(Fighter.Woo)回复于 2002-07-26 10:20:02 得分 0
用_atoi64肯定不行。因为byte数组本身所存的是二进制数据,不是ascII码
memcpy我试试!:)Top
4 楼sunbo()回复于 2002-07-26 10:26:11 得分 40
试试这个,不行的话,与Intel系列的字节次序有关
byte[8] binaryData;
double result;
result = *((double*) binaryData);
Top
5 楼yhb4(胖子)回复于 2002-07-26 11:00:14 得分 0
upTop
6 楼fz_zhou(vcfan)回复于 2002-07-26 11:39:38 得分 0
在thinking in c++的代码里面有这个例子,你可以去网上下一个thinking in c++的原码,再看看它是怎么实现的!
文件名为: BITVECT.CPPTop




