[英]C++ - Operating on the bits in a floating point value
我正在嘗試編寫一個將一組字節重新解釋為float
的函數。 我已經看過一個Stackoverflow問題 ,這使我嘗試對字符數組進行reinterpret_cast<>()
的工作,然后我開始嘗試將一個float拆分為char,然后再次對其進行重新組裝,但這只是給我看似隨機數而不是我的數字認為值應該是,因為每次輸出都不同。 一些不同的示例是:
1.58661e-038
3.63242e-038
2.53418e-038
float變量應包含值5.2。
編譯代碼:
float f = 5.2;
unsigned char* bytes = reinterpret_cast<unsigned char*>(&f);
float f1 = reinterpret_cast<float&>(bytes);
std::cout << f1 << std::endl;
給我
1.75384e-038
當然,每次運行該程序時,編號都不同。 但是,有趣的是,如果將代碼放入循環中並在一次運行中執行幾次,輸出將保持一致。 這使我認為它可能是內存位置,但是如果是這樣,我不確定如何訪問變量的真實值-取消引用運算符不起作用,因為它不是指針。
所以我的問題是-如何將float
類型的變量(以后是double
)拆分為單個字節(允許我修改位),然后重新組裝它。
任何幫助將不勝感激。
bytes
是一個指針 。
更改
float f1 = reinterpret_cast<float&>(bytes);
至
float f1 = *reinterpret_cast<float*>(bytes);
// Cast to a different pointer... ^
// ^ ...and dereference that pointer.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.