次のように、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;
}
しかし、それは機能しません。左シフトの結果を含む一時変数は、8ビットの4シフト操作後にオーバーフローするため、32ビットしか格納できないようです。
私は次のようなものを使用できることを知っています
a = input[i] * pow(2,8*i);
しかし、好奇心のために、シフト演算子を使用してこの問題の解決策があるかどうか疑問に思いました...