2013-10-16 132 views
1

是否有一種簡單的方法來操作std :: cout,以便在其十六進制表示中打印雙精度?換句話說,相當於東西:C++:雙十六進制打印表示

printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double)); 

提供一些背景,我有一個計劃,打印浮點結果的數百個,我想知道如果有一個神奇的單行黑客可以打印所有的他們在十六進制。

+0

http://stackoverflow.com/questions/479373/c-cout-hex-values – Ashalynd

回答

2

std::hexfloat看看是否可以使用C++ 11

double k = 3.14; 
std::cout<< std::hexfloat << k << std::endl; 

打印:0x1.91eb85p + 1

+0

該死的,正是我所需要的,但g ++還不支持它。 – nccc

+0

請注意,這和你的'printf'事情不一樣(反正也是非法的)。 – jrok

+0

gcc是否應該完全符合C++ 11標準? – user1233963

-1

你可以std::cout十六進制打印有:

std::cout << std::hex << num 
+0

這並不適用於'float'和'double'工作。 –

1

您可以使用此

#include <iomanip> //Include this file 
    cout<<hex<<*reinterpret_cast<unsigned __int64 *>(&r);