欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c語言十六進制與十進制轉換?

張吉惟2年前19瀏覽0評論

這里有兩種情況:

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

#include<stdio.h>

#include<stdint.h>

intmain(){

uint8_tstr[6]={0};

uint8_tnum_16=0;

uint32_tnum=85;

printf("%7cDECHEX\r\n",'\0');

printf("num%3d%3x\r\n",num,num);

inttemp=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);

return0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

運行結果:

DECHEX

num8555

num_1613385

1

2

3

1

2

3

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

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

這種轉化非常的簡單:

printf("%x",num);

1

1

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