Visual Studio で 64 ビット double を取得し、それを80 ビット拡張 (IEEE-754) doubleに変換するコードを探しています。結果は 10 バイト配列に格納する必要があります (リトルエンディアン形式だと思います)。その理由は、Borland c++ で作成されたプログラムに 80 ビット double を送信し、この double を要求する必要があるためです。しかし、私が試したこと(基本的に、それぞれ52ビットと11ビットの仮数と指数を取り、15ビットで16383オフセットになるように指数を変換し、仮数を64ビットにパディングする)を試みたので、これを行う方法がわかりません。うまくいかないようです。この質問の逆です。
inline void ConvertDblToLongDbl(double dbl, unsigned char aCh[10])
{
__int64 ull= *(__int64*)(&dbl);
*(unsigned short*)&aCh[8]= (unsigned short)((ull>>52&0x7FF+15360)| // exponent, from 11 bits to 15 bits
((ull&(__int64)1<<63)?0x8000:0)); // sign, the 16th bit
ull= ull&0xFFFFFFFFFFFFF;
*(__int64*)&aCh[0]= ull|0x8000000000000000;
}
ありがとう、
M