c++ 怎么把八个char型转换成一个double型?

来源:百度知道 编辑:UC知道 时间:2024/05/11 03:52:05
从串口读数据,高地位是反的,想全部以char读出来再合成一个double型。这个涉及位运算,不知道应该怎么写?

一般会这么弄,假设read()是从串口读一个字节。

double t;

for (int i = 8; i-- > 0;)
{
*(long long *)t = *(long long *)t << 8 | read();
}

假设这8个char分别是ch1,ch2,ch3,...,ch8。准备一数组 chs[8],代码可以这样写:

char chs[8];
double dbl;

chs[0] = ch1;
chs[1] = ch2;
chs[2] = ch3;
chs[3] = ch4;
chs[4] = ch5;
chs[5] = ch6;
chs[6] = ch7;
chs[7] = ch8;

dbl = *(double*)chs;

dbl 就是合成后的double型变量。

char str[20] = "123.45678";
double dec;
sscanf(str,"%lf",&dec); //格式化成double类型
printf("%s",dec);