我正在寻找将在 Visual Studio 中采用 64 位双精度并将其转换为80 位扩展(IEEE-754)双精度的代码。结果应该存储在一个 10 字节的数组中(我想是小端格式)。原因是我需要将 80 位双精度发送到一个用 Borland c++ 编写的程序并要求这个双精度。但是我不知道该怎么做,因为我尝试过(基本上分别取 52 位和 11 位的尾数和指数,将指数转换为 15 位的 16383 偏移量并将尾数填充为 64 位)没有t 似乎工作。这是这个问题的反面。
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;
}
谢谢,
米