java32位无符号数_用C语言解释32位无符号长单精度IEEE-754浮点数
我使用的是Microchip的XC32編譯器,它基于標準的C編譯器 .
我正在從RS485網絡上的設備讀取32位值并將其存儲在unsigned long中,我將其命名為DWORD .
即
typedef DWORD unsigned long;
就目前而言,當我將此值轉換為float時,我得到的值基本上是它的整數表示的浮點版本,而不是正確的IEEE-754解釋浮點數 .
即
DWORD dword_value = readValueOnRS485();
float temp = (float)dword_value;
這里,dword_value將以十六進制格式表示為0x4366C0C4,作為十進制將表示為1130807492,因此對浮點數的類型轉換只是給我1.130807492 * 10 ^ 9或1130807492.0這不是我想要的 .
我想要單精度IEEE-754表示,它給我一個浮點值230.75299072265625
顯然,對浮動進行類型轉換對我來說不起作用 . 我需要一種可以轉換此形式的方法 . 我在XC32庫中看了一遍,但找不到任何東西 .
有沒有人知道一個預定義的方法,為我正確地做出這種解釋?或者可能有一些建議的方法我可以寫?我試圖避免為這個特定任務編寫自己的代碼,因為我擔心如果C已經有了這個功能,我找不到有效的解決方案 .
有趣的是,如果我對char *執行此操作,則該值將在char *上正確表示為230.75:
sprintf(random_char_pointer, "%.2f, dword_value);
在這里打印random_char_pointer到屏幕給我230.75所以sprintf必須正確處理解釋 . 因此我假設C中已經存在某些東西 . 有人可以幫忙嗎?
總結
以上是生活随笔為你收集整理的java32位无符号数_用C语言解释32位无符号长单精度IEEE-754浮点数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: import java.util.cal
- 下一篇: 怎么使用java初始化链表_Java 链