有没有一种简单的方法来操作std :: cout,以便它以十六进制表示形式打印双打?换句话说,相当于:
printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));
为了提供一些上下文,我有一个打印数百个浮点结果的程序,我想知道是否有可以用十六进制打印所有这些神奇的单行黑客。
答案 0 :(得分:3)
如果可以使用C ++ 11,请查看std::hexfloat
示例强>:
double k = 3.14;
std::cout<< std::hexfloat << k << std::endl;
打印: 0x1.91eb85p + 1
答案 1 :(得分:3)
您可以使用此
#include <iomanip> //Include this file
cout<<hex<<*reinterpret_cast<unsigned __int64 *>(&r);
答案 2 :(得分:-2)
您可以{:1}}以十六进制打印:
std::cout