我們在研究封包技術時,經常會碰到將浮點數轉換成十六進製制形式。比如在遊戲中人物的座標,經常就用浮點數來表示。怎麼將浮點數轉換成十六進製制字串形式呢?下面我將寫出其在delphi中的方法。
先講點背景吧,我們通常說的小數,一般就是指浮點數,而且當值不大的時候,泛指單精度浮點數。在delphi中,single是單精度浮點數,占用4個位元組儲存,高精度的double占用8個位元組,real是borland早期用過的,占用6個位元組,現在逐漸淡出了。
通過呼叫delphi中的bintohex函式可以很容易實現其轉換。下面是delphi的原型。
解釋一下該函式:記憶體中位址為buffer,長度為bufsize的一段資料轉成16進製制並存入text所指向的記憶體位址中,text的長度至少需要bufsize*2才能放下轉換後的資料。
有了這些背景,就可以理解我下面寫的**了。
比如在呼叫的時候,假設傳入3.1415,得到的結果輸出為560e4940,注意這裡的結果是低位在前,高位在後。意思就是40490e56就是我們通常說的3.1415。
你可以用greatboy寫的單精度浮點數轉換工具驗證。
字串轉換成浮點數的實現
字串常用的轉換函式atof atoi atol等 其主要作用為將字串轉換成浮點型 整型 長整型 double型 應用舉例 include includeint main 執行結果 對atof進行實現 函式宣告 double myatof const char str 函式功能 對字串str進行掃瞄,...
十進位制整數 浮點數與十六進製制字串互轉
函式 hex2dec 描述 十六進製制字串轉十進位制整數 引數 pstrhex 十六進製制字串 以數值的位元組順序 nlen 字串長度 不含null結束符 返回 十進位制整數 int hex2int unsigned char pstrhex,int nlen else if toupper pst...
十六進製制轉換成八進位制
第一次發部落格,若寫的不好,希望大家多提下意見 乙個簡單的進製轉換的問題 十六進製制轉換成八進位制 思想 先把十六進製制的數轉成二進位制,然後再把二進位制的數轉成八進位制 include include using namespace std string hextobin string hex 十...