我正在尝试从一个包含16个元素的字节数组中获取数值(double),如下:
unsigned char input[16];
double output;
...
double a = input[0];
distance = a;
for (i=1;i<16;i++){
a = input[i] << 8*i;
output += a;
}
但是它没有起作用。 似乎临时变量只能存储32位左移操作的结果,因为进行4次8位左移操作后,它就会溢出。
我知道我可以使用类似于
a = input[i] * pow(2,8*i);
但是,出于好奇心,我想知道是否可以使用移位运算符来解决这个问题...