我想从二进制表示中生成浮点变量,我很快就想出了以下代码:
float bintofloat(unsigned int x) {
float *f = (float *)&x;
return *f;
}
Run Code Online (Sandbox Code Playgroud)
然后可以按如下方式调用上述函数:
float f = bintofloat(0x3f800000);
Run Code Online (Sandbox Code Playgroud)
我只是希望得到一些关于这种方法的意见:使用指针是否是最好的方法,或者是否有更好或更简洁的方法?
不幸的是,我对类型的使用似乎造成了干扰。对此我深表歉意;为了简单起见,我选择坚持使用内置类型。但我确实认识到这是天真的,并假设sizeof(int) == sizeof(float)。
同样,我的主要问题是使用指针是否是实现从二进制到浮点转换的好方法?
我想这是一个性能计算问题.我正在用C语言编写一个程序,它产生大量的输出,远远超过通常可以整体存储在RAM中的程序.我打算简单地将输出写入stdout; 所以它可能只是进入屏幕,或者可能被重定向到文件中.我的问题是如何为将存储在RAM中的数据选择最佳缓冲区大小?
输出数据本身并不是特别重要,所以我们只是说它产生了一个庞大的随机整数列表.
我打算有两个线程:一个产生数据并将其写入缓冲区,另一个将该缓冲区写入stdout.这样,我可以开始生成下一个输出缓冲区,同时仍然写入前一个缓冲区stdout.
需要明确的是,我的问题不是如何使用功能,如malloc()和pthread_create()等我的问题是纯粹的关于如何选择一个号码最佳缓冲区大小字节(512,1024,1048576),这将提供最佳性能?
理想情况下,我想找到一种方法,我可以动态地选择最佳缓冲区大小,以便我的程序可以适应当时运行的任何硬件.我试图寻找这个问题的答案,虽然我发现了一些关于缓冲区大小的线程,但我找不到与此问题特别相关的任何内容.因此,我只是想把它作为一个问题发布,希望我能得到一些不同的观点,并提出比我自己更好的东西.