是否有一種簡單的方法來操作std :: cout,以便在其十六進制表示中打印雙精度?換句話說,相當於東西:C++:雙十六進制打印表示
printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));
提供一些背景,我有一個計劃,打印浮點結果的數百個,我想知道如果有一個神奇的單行黑客可以打印所有的他們在十六進制。
是否有一種簡單的方法來操作std :: cout,以便在其十六進制表示中打印雙精度?換句話說,相當於東西:C++:雙十六進制打印表示
printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));
提供一些背景,我有一個計劃,打印浮點結果的數百個,我想知道如果有一個神奇的單行黑客可以打印所有的他們在十六進制。
在std::hexfloat看看是否可以使用C++ 11
例:
double k = 3.14;
std::cout<< std::hexfloat << k << std::endl;
打印:0x1.91eb85p + 1
該死的,正是我所需要的,但g ++還不支持它。 – nccc
請注意,這和你的'printf'事情不一樣(反正也是非法的)。 – jrok
gcc是否應該完全符合C++ 11標準? – user1233963
你可以std::cout
十六進制打印有:
std::cout << std::hex << num
這並不適用於'float'和'double'工作。 –
您可以使用此
#include <iomanip> //Include this file
cout<<hex<<*reinterpret_cast<unsigned __int64 *>(&r);
http://stackoverflow.com/questions/479373/c-cout-hex-values – Ashalynd