服务器代码:
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/