整列された配列uint8[8]
をに変換しようとすると、少し難しい問題に直面していdouble
ます。ビット演算で変換するのは特に簡単でしたが、符号ビットの点で厄介になる可能性があることを理解していuint8[4]
ますか?long
double
Javaでは単純に使用しますByteBuffer.wrap(bytes).getDouble()
が、Cではそれほど簡単ではないと思います。
このコードを実装しようとしましたが、最後のコマンドでエラーが発生Expression is not assignable
し、Shift count >= width of type
long tempHigh = 0;
long tempLow = 0;
double sum = 0;
tempHigh |= buffer[0] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[1] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[2] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[3] & 0xFF;
tempLow |= buffer[4] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[5] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[6] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[7] & 0xFF;
sum |= ((tempHigh & 0xFFFF) <<= 32) + (tempLow & 0xFFFF);
この手順を正しく実行するにはどうすればよいですか、または私が犯したエラーを解決するにはどうすればよいですか?
前もって感謝します。