Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中转储六角浮动+;_C++_Stl_Hex_Double_Dump - Fatal编程技术网

C++ 在C+中转储六角浮动+;

C++ 在C+中转储六角浮动+;,c++,stl,hex,double,dump,C++,Stl,Hex,Double,Dump,我尝试了以下几点: std::cout << std::hex << 17.0625; std::cout是一种格式操纵器,用于以十六进制表示形式打印浮点值。它从2011年的标准开始就存在了。尝试cout其他人已经提出了C++11解决方案,但您的问题没有C++11标签。这是一个ISO C99解决方案,使用ISO C99标准中的%a和%la格式说明符 我想看11.01(17.0625十六进制) 以下程序打印0X1.11P+4 #include <stdio.h>

我尝试了以下几点:

std::cout << std::hex << 17.0625;

std::cout是一种格式操纵器,用于以十六进制表示形式打印浮点值。它从2011年的标准开始就存在了。

尝试
cout其他人已经提出了C++11解决方案,但您的问题没有C++11标签。这是一个ISO C99解决方案,使用ISO C99标准中的
%a
%la
格式说明符

我想看11.01(17.0625十六进制)

以下程序打印
0X1.11P+4

#include <stdio.h>

int main() {

  double x = 17.0625;

  printf("17.0625 in hexadecimal is: %A\n", x);  

}
#包括
int main(){
双x=17.0625;
printf(“16进制的17.0625是:%A\n”,x);
}

下面是一个示例,演示如何读取和写入十六进制格式的浮点数

#include <stdio.h>

int main() {

  double x = 0.1;

  char* str = "0X1.999999999999AP-4";

  printf("0.1 in hexadecimal is: %A\n", x);

  printf("Now reading %s\n", str);

  /* in a production code I would check for errors */
  sscanf(str, "%lA", &x); /* note: %lA is used! */

  printf("It equals %g\n", x);

}
#包括
int main(){
双x=0.1;
char*str=“0X1.9999999999 AP-4”;
printf(“十六进制中的0.1是:%A\n”,x);
printf(“正在读取%s\n”,str);
/*在生产代码中,我会检查错误*/
sscanf(str,“%lA”,&x);/*注意:使用了%lA*/
printf(“它等于%g\n”,x);
}

如果可移植性很重要,或者你被旧编译器所困扰,我认为这是一个合理的方法。

老实说,我发现C++在输出这些格式化的形式时会很烦人。在这些情况下,我使用C风格的格式化打印。您需要将
memcpy
转换为
int
,并打印该格式的十六进制表示形式
memcpy
是将构成一种类型的对象的位视为另一种类型的唯一安全方法,而不会影响未定义的行为(而是影响未指定的行为,这取决于您是否知道这些位构成有效的
int
表示)。您是希望使用
双精度
的内存布局的十六进制表示形式,还是以16为基数打印人类可读的FP值?此外,@JBL可能您通过指针看到了类型双关<代码>重新解释铸件(&f)#include <stdio.h> int main() { double x = 0.1; char* str = "0X1.999999999999AP-4"; printf("0.1 in hexadecimal is: %A\n", x); printf("Now reading %s\n", str); /* in a production code I would check for errors */ sscanf(str, "%lA", &x); /* note: %lA is used! */ printf("It equals %g\n", x); }