c++ - c 从 uint64 到 float64_IEEE 的转换?

标签 c++ c linux floating-point type-conversion

服务器代码:

s64 interrupt;

上面是内核代码,我正在通过用户应用程序读取上面的值,如下所示。

用户代码:

uint64 measurements [17];
uint64 Latency; 
fscanf (fp, "%u", Latency);  // I am reading the interrupt from server code using fscanf
measurements[17] = Latency;

但最后我想将 FLOAT64_IEEE 格式的测量 [17] 发送到客户端。 如何进行转换?? 有人可以帮我吗??

最佳答案

将 64 位整数转换为 double 的基本方法是

uint64 x = 12345132091298;
double d = x;

但是,这假设 x 的值小于 253 作为整数值,或者您不介意丢失最低位。换句话说,像这样:

uint64 x1 = 1 << 53;
uint64 x2 = x + 1;
double d1 = x1;
double d2 = x2;

cout << d2 - d1 << endl; 

将导致零(假设编译器不“聪明”并在执行 d2-d1 之前将结果计算为常量)。

我个人不会在“客户端”上转换为 float - 您处理原始数据的“稍后”时间(至少在您(冒着)丢失数据的情况下)越好,假设不需要减少数据(在这种情况下,它将 64 位转换为 64 位)。

关于c++ - c 从 uint64 到 float64_IEEE 的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468243/

相关文章:

c - 使用 dub2() 将输出重定向到文件 : undefined reference to `dub2'

linux - 如何创建基于主机名在 Linux 服务器上创建日志的 shell 脚本

C++:错误:无法创建变量对象

c - 内存中数据的有符号和无符号表示?

c - 为 OpenGL 生成顶点数组

linux - 安装 docker 时出错

linux - 我可以同时输入变量和回显吗?

c++ - 我应该争取具有单一职责的成员函数还是尽量减少成员变量的数量?

C++ 术语不会计算为采用 0 个参数线程套接字的函数

c++ - gcc: undefined reference