C語言十進位制轉十六進位制,c語言程式設計 把十進位制轉換為十六進位制

時間 2021-08-30 09:11:12

1樓:百度文庫精選

內容來自使用者:中國林709

十進位制轉十六進位制c語言函式

今天有位朋友在群裡面問如何接收串列埠除錯助手發來的十六進位制資料,並以十六進位制的形式顯示在lcd上。比如串列埠除錯助手上傳送十六進位制資料3c,微控制器帶的lcd上也顯示3c。微控制器接收到來自電腦串列埠的資料0x3c後,儲存到一個變數中,當我們呼叫顯示數字的函式時,實際上顯示出來的是十進位制的資料,例如傳送0x3c,會顯示十進位制資料60。

看來要想顯示十六進位制,還不是那麼容易。十六進位制中,包含0~9數字,還包含a~f字母,看來要想顯示,必須要用顯示字元的函式而不能用顯示數字的函式了。

但是不能直接呼叫顯示字元的函式。因為要想顯示3c,實際上是要顯示2個字元,你如果直接把資料帶進去,實際上他會認為是一個字元的ascii碼。

於是我們要把發過來的資料變換成兩個字元,用下面的公式:

shi = rece_data/16; // 獲取第一位ge  = rece_data%16; // 獲取第二位然後把數字轉換成字元:

switch(shi)

case 10:shi='a';break;

2樓:冰是沉默的水

#include

#include

#include

#include

int what,input;

void toall(int tmp,int a,int b);char arr[32]=;

int i=31;

if(tmp==0)

return;

while(tmp!=0)

printf("%d轉換為%d進製為:",input,what);

for(int j=i+1;j<32;j++)printf("%c",arr[j]);

}int main()

printf("輸入需要轉換的十進位制數字:");

scanf("%d",&input);

switch(what)

getch();

}我這剛寫了個轉各進位制的**,你可以看看

-物聯網校企聯盟技術部

3樓:科技大互聯

簡單一句話就是使用遞迴呼叫showhex()函式,你可以手寫把每一次執行的r值寫出來就看明白了

4樓:彭珂的課堂

c語言_012_十六進位制轉十進位制

c語言程式設計 把十進位制轉換為十六進位制

5樓:黑白say晚安

方法一:

#include

#include

using namespace std;

string decinttohexstr(long long num)

string decstrtohexstr(string str)int main()

return 0;}

方法二:

#include

#include

#include

#include

#include

using namespace std;int main()

reverse(v.begin(), v.end()); string hexstr; if (v.

size() % 4 == 0)    if (temp <= 9) hexstr += temp; else hexstr += ('a' + temp - 10); } }

else

if (temp <= 9) else hexstr += ('a' + temp - 10); } } cout << hexstr << endl; return 0;}

擴充套件資料:

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

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

利用系統函式有

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

所以**可以為:

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

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

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

3. 自己編寫

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

**如下:

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

int main ()

6樓:匿名使用者

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa) int main ()

擴充套件資料:

16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。

例:2af5換算成10進位制:

用豎式計算:

第0位: 5 * 16^0 = 5

第1位: f * 16^1 = 240

第2位: a * 16^2= 2560

第3位: 2 * 16^3 = 8192

-------------------------------------

10997

直接計算就是:

5 * 16^0 + f * 16^1 + a * 16^2 + 2 * 16^3 = 10997

16進位制到二進位制

由於在二進位制的表示方法中,每四位所表示的數的最大值對應16進位制的15,即16進位制每一位上最大值,所以,我們可以得出簡便的轉換方法,將16進位制上每一位分別對應二進位制上四位進行轉換,即得所求

7樓:我是一個麻瓜啊

程式設計程式如下:

擴充套件資料

十六進位制轉換十進位制

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

十六進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方,以此類推。在第n(n從0開始)位上,如果是數β (β大於等於0,並且β小於等於 15,即:f)表示的大小為 β×16的n次方。

假設有一個十六進數 2af5直接計算就是:5×160+f×161+a×162+2×163=10997

8樓:澀錦無弦

1、方法一:使用進位制轉換。

#include

#include

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source);

/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch);

int main()

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source)

return sum;

}/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch)

if(ch >= 'a' && ch <='f')

if(ch >= 'a' && ch <= 'f')

return -1;

}2、方法二:可以使用sscanf函式將以字串形式的十六進位制數轉換為整型的十六進位制。

sscanf函式的用法與printf函式很像,都是以格式化的形式進行操作。例如如下的例子中是將字串a23cd以十六進位制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字串a23cd以十進位制形式輸入a中,這顯然是錯誤的,因為將a23cd轉換為十進位制的時候,無法解析a,cd等字元,所以得出的結果就是錯誤的。

int a;

sscanf("a23cd", "%x", &a);

printf("%x\n",a);

printf("%d\n",a);

linux@ubuntu:~/test$ ./a.out

a23cd

664525

擴充套件資料

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

參考資料

9樓:岔路程式緣

稍等一會兒好嗎~~

#include

main()

else

else

a=a/16;

w++;}}

printf("\n");

printf("%d(10)轉換為16進位制數字為:",u10);

for(i=w-1;i>=0;i--)

printf("\n");}

10樓:匿名使用者

通過鍵盤輸入一個十進位制數,然後將其

11樓:匿名使用者

#include

int main(void)

i=0;

while(x)

for(j=i-1;j>=0;j--)

if(a[j]<=9)

printf("%d",a[j]);

else if(a[j]<=15)

printf("%c",a[j]+'a'-10);

printf("\n");

return 0;}

12樓:匿名使用者

#include

int main()

i = 0;

while(a > 0)

for(i--; i >= 0; i--)printf("%c", s[i]);

return 0;}

c語言中16進位制轉換為十進位制

13樓:路堯家的顧小言

最簡單的使用scanf()函式和printf()函式進行格式轉換,以16進位制格式輸入,再以10進位制格式輸出。

程式**如下:

#include

int main()

執行結果:

c語言十進位制轉二進位制,C語言十進位制轉二進位制

何老師 答疑 十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元...

C語言二進位制轉十六進位制問題,十六進位制轉換成二進位制

include include int main result 0 結果清零。k 0 表示位權的k清零。k 初始位權為1 b j 0 printf 結果是 for i strlen b 1 i 0 i printf c b i printf return 0 10111111換成10進位制是191,...

c語言 二進位制轉十六進位制,C語言 二進位制轉十六進位制

看看這個行不行?希望對你有幫助 include stdafx.h include stdio.h include string.h include conio.h include stdlib.h void convert char input,char output for ii nx ii9 0...