我試圖在WinDbg中看到float值的十六進制表示形式。這是很容易可以將十六進制值轉換爲使用.formats
浮動:將float/double轉換爲IEEE十六進制表示
0:000> .formats 0x41133333
[...]
Float: low 9.2 high 0
Double: 5.3941e-315
但是關於倒過來怎麼辦?
我已經試過
0:000> ? 9.2
Syntax error at '9.2'
0:000> ?? 9.2
double 9.1999999999999993
0:000> ? @@(9.2)
Evaluate expression: 9 = 00000000`00000009
0:000> ? @@(reinterpret_cast<unsigned int64>(9.2))
Evaluate expression: 9 = 00000000`00000009
到目前爲止,我可以轉換一個浮動的唯一方法是通過一個間接在內存:
0:000> ef 00000001`00003acc 9.2
0:000> dd 00000001`00003acc L1
00000001`00003acc 41133333
不過,我不喜歡改變的內容調試期間的內存。爲了與程序的內存發生衝突,我可以使用.dvalloc
,但它只是使得必要的步驟更加複雜。
是否有一個更容易的內置方式將float/double轉換爲hex?
你可以使用'calc' :)。嚴重的是,如果你還沒有找到它,它可能不存在,但可以肯定的是,我會發郵件到[email protected]。安德魯理查茲很可能會把它拿起來,你會得到一個明確的答案。 –
@LievenKeersmaekers:這是個好主意。 –