C語言實現16進製制數與10進製數的轉化

2021-10-04 20:48:25 字數 1266 閱讀 6834

這裡有兩種情況:

①第一種情況:如果我得到的是乙個16進製制數,我通過肉眼看到的就是16進製制顯示(這裡看到的肯定列印結果),比如85,我知道這個數是16進製制,但是**裡面卻不是,在記憶體空間裡卻是按照int型別10進製進行儲存的。需要將它在記憶體空間裡面也轉化為16進製制的儲存。

#include 

#include

int main();

uint8_t num_16 = 0;

uint32_t num = 85;

printf(

"%7cdec hex \r\n", '\0');

printf(

"num %3d %3x\r\n", num, num)

; int temp = 0;

sprintf((char *)str, "%d", num)

; sscanf((char *)str, "%x", &temp)

; num_16 = temp;

printf(

"num_16 %3d %3x\r\n", num_16, num_16)

;return 0;

}

執行結果:

dec  hex 

num 85 55

num_16 133 85

上述10進製儲存的16進製制數85就轉化成了16進製制儲存的16進製制數85。**此時,經過此轉換的數大小已經變了,它們大小是不相等的。**同理可以將16進製制轉換為10進製數。

②第二種情況:在第一種情況下,我是將肉眼看到的16進製制數(為什麼這麼說呢?本來我是儲存的10進製數,在經過系統或者某段**的轉化後,顯示給我的是16進製制結果,我看到的結果沒有變化,但是在記憶體空間已經發生變化了。)轉化為10進製數 。這裡經過系統或者某段**進行轉換的過程就是第二種情況:**10進製到16進製制的轉換,但是並不會改變值,但是列印出來的記過是已經改變了,如果我要使用這個結果就得通過第一種情況進行轉化。

這種轉化非常的簡單:

printf

("%x"

, num)

;

格式化列印,會自動將結果轉化為16進製制。如果想要將結果進行儲存,可參考第一種情況,直接將上述的sprintfsscanf中的格式化引數%d%x交換即可。

C語言實現16進製製到2進製的轉換

1.沒有注意到字串儲存的時候後面會自動加乙個 0,因此想存放乙個長度為n的字串,需要開闢n 1 個位元組的空間,最後乙個位元組存放 0.2.迴圈過程中注意迴圈變數每次迭代過程中都要想終止條件靠近,避免死迴圈.3.利用陣列下標的控制來模擬棧 include include include void h...

10進製數轉換成16進製制

十六進製制的元素個數固定,而且還有對應編號,可以用查表法.乙個int型別十進位制數在32位作業系統中佔4個位元組,32位2進製數取它的低8位,例如60,在記憶體中以二進位制數0011 1100存放,而乙個十六進製制數中每一位數對應二進位制中4位數,因此可以將十進位制數與f進行 與 運算,得出低四位 ...

C 利用順序棧實現將10進製數轉換為16進製制數

利用順序棧來寫進製轉換比將陣列逆序簡單許多,本文章採用的棧定義為順序棧定義 下面這個是標頭檔案 include c 標頭檔案 include stdio.h include string.h using namespace std define maxlen 100 定義線性表的最大容量 typed...