c語言將十進位制數轉換為16進製制的函式

2021-07-10 10:16:41 字數 1814 閱讀 1097

有3種方式實現,其中兩種是使用系統函式,另一種是直接自己編寫。

使用系統函式實現要加入#include ,自己編寫則不需要這個標頭檔案。

下面的**就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現方式。

利用系統函式有

1. char *  itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字串儲存的位置,base是進製數(但是這個函式不是標準c函式,有些編譯器是不支援的!)。所以**可以為:

charbuffer [33];//用於存放轉換好的十六進製制字串,可根據需要定義長度

char* inttohex(intaa)

2. sprintf(str,"%x",value);str是轉化儲存的位置,%x表示十六進製制格式,value是要轉化的數字。所以**可以為:

charbuffer [33];//用於存放轉換好的十六進製制字串,可根據需要定義長度

char* inttohex(intaa)

3. 自己編寫

如果引數只要兩位數的整數,那麼很簡單。**如下:

charbuffer [3];//用於存放轉換好的十六進製制字串。由於只要支援2位整數,所以長度3即可

char* inttohex(intaa)

如果引數是任意整數,由於計算方法是每次都除以16和對16取餘數,餘數以倒序的順序排列就是結果,所以最佳方法是用遞迴函式(當然迴圈也可以,但需要最後再進行倒序)。遞迴**如下:

charbuffer [33];//用於存放轉換好的十六進製制字串,可根據需要定義長度

char* inttohex(intaa)

else

return(buffer);

}

最後測試**如下(以sprintf為例,其餘只要替換inttohex函式中的**內容即可):

#include

#include

charbuffer [33];//用於存放轉換好的十六進製制字串,可根據需要定義長度

char* inttohex(intaa)

intmain ()

將十進位制數M轉換為N進製數

題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...

C 十進位制數轉16進製制數

最近在做乙個專案,其中傳送部分需要對資料進行移位和 操作,在網上找了許久的轉換方式,結果並沒有。後來領導一句話,讓我明白了,十進位制數和16進製制數是一樣的 確實,貌似,剛來時,用c 對公司原有的專案進行維護時,增加過乙個標定功能,給傳送陣列賦的就是10進製的說。data volt 2 byte 0...

將十進位制轉換為二進位制

問題 將任一十進位制整數轉換為二進位制形式。方法一分析 將十進位制轉換為二進位制的方法很多,本方法利用c語言能夠對位進行操作的特點。對於c語言來說,乙個整數在計算機內就是以二進位制形式儲存的,所以沒有必要再將乙個整數經過一系列運算轉換為二進位制形式,只要將整數在記憶體中的二進位制表示輸出即可。源程式...