C++ c从uint64到浮点64_IEEE的转换?

C++ c从uint64到浮点64_IEEE的转换?,c++,c,linux,floating-point,type-conversion,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]发

服务器代码:

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]发送到客户端。 如何进行转换??
有人能帮我一下吗?

假设你在谈论IEEE 754标准,如果你的代码是可移植的,你应该实现你自己的例程将值转换成该格式

如果可移植性不是一项要求,并且两种体系结构都相同(您的机器和客户端机器),并且都使用符合IEEE 754的FPU,那么您可以将该值转换为浮点值,然后将其传输到客户端

希望这能给你一些进一步研究的线索

编辑#1(回复评论):


请参阅。

假设您讨论的是IEEE 754标准,如果您的代码是可移植的,您应该实现自己的例程将值转换为该格式

如果可移植性不是一项要求,并且两种体系结构都相同(您的机器和客户端机器),并且都使用符合IEEE 754的FPU,那么您可以将该值转换为浮点值,然后将其传输到客户端

希望这能给你一些进一步研究的线索

编辑#1(回复评论):


请参阅。

假设您讨论的是IEEE 754标准,如果您的代码是可移植的,您应该实现自己的例程将值转换为该格式

如果可移植性不是一项要求,并且两种体系结构都相同(您的机器和客户端机器),并且都使用符合IEEE 754的FPU,那么您可以将该值转换为浮点值,然后将其传输到客户端

希望这能给你一些进一步研究的线索

编辑#1(回复评论):


请参阅。

假设您讨论的是IEEE 754标准,如果您的代码是可移植的,您应该实现自己的例程将值转换为该格式

如果可移植性不是一项要求,并且两种体系结构都相同(您的机器和客户端机器),并且都使用符合IEEE 754的FPU,那么您可以将该值转换为浮点值,然后将其传输到客户端

希望这能给你一些进一步研究的线索

编辑#1(回复评论):


请参阅。

将64位整数转换为双精度的基本方法是

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; 

uint64 x1=1将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; 

uint64 x1=1将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; 

uint64 x1=1将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; 


uint64 x1=1将您的问题放在一边,对于数组
uint64度量值[17]
度量值[17]
无效。这是一个键入错误。@user3603553您可能想更正它……您的代码并没有真正显示您正在努力做的事情
%u
读取类型为
unsigned int
的值,该值在大多数地方不是
uint64
(如果我们假设uint64是一个64位无符号整数,那么其他任何问题都很愚蠢)正式来说,另一个问题是由不同的用户提出的。但很可能是同一个人拥有两个帐户,或者两个人做着相同的功课——当数组被定义为
SomeType度量[17]时,访问
measurements[17]
当然看起来很系统。撇开你的问题不谈,对于数组
uint64度量值[17]
度量值[17]
无效。这是一个键入错误。@user3603553你可能想更正它……你的代码并没有真正显示出你想要做的很好
%u
读取类型为
unsigned int
的值,该值在大多数地方不是
uint64
(如果我们假设uint64是一个64位无符号整数,那么其他任何问题都很愚蠢)正式来说,另一个问题是由不同的用户提出的。但很可能是同一个人拥有两个帐户,或者两个人做着相同的功课——当数组被定义为
SomeType度量[17]时,访问
measurements[17]
当然看起来很系统。撇开你的问题不谈,对于数组
uint64度量值[17]
度量值[17]
无效。这是一个键入错误。@user3603553你可能想更正它……你的代码并没有真正显示出你想要做的很好
%u
读取类型为
unsigned int
的值,该值在大多数地方不是
uint64
(如果我们假设uint64是一个64位无符号整数,那么其他任何问题都很愚蠢)正式来说,另一个问题是由不同的用户提出的。但很可能是同一个人拥有两个帐户,或者两个人做着相同的功课——当数组被定义为
SomeType度量[17]时,访问
measurements[17]
看起来很系统。撇开你的问题不谈,对于数组
uint64度量值[17]
度量值[17]
无效。这是一个键入错误。@user3603553你可能需要