我在fread时从浮动到双重铸造有问题;
fread(doublePointer,sizeofFloat,500,f);
Run Code Online (Sandbox Code Playgroud)
如果我将双指针更改为浮点指针,它可以正常工作.但是,我需要它是laster on的双指针,我想当我从小数据类型(float)写入更大的数据类型(double)的内存时,它应该没问题.但事实证明它不像我预期的那样有效.这有什么问题,我该如何解决这个问题.
我知道我可以通过逐个转换来解决它.但我有大量的数据.我不想额外9000000+轮转换..这将是非常昂贵的.有什么技巧可以解决吗?
有没有c ++/c技巧
谢谢
如果将float格式的数据写入double,那么结果只会产生垃圾.当然,你不会溢出你的缓冲区,但这不是唯一的问题 - 它仍然会找到两个浮点数,它期望一个双倍.你需要将它作为一个浮点读取,然后转换 - 以这种方式转换(甚至隐式)让编译器知道数据最初是一个浮点数并且需要转换:
float temp[500];
int i;
fread(temp, sizeof(temp[0]), 500, f);
for (i = 0; i < 500; i++)
doublePointer[i] = temp[i];
Run Code Online (Sandbox Code Playgroud)