C語言轉為16進制函數(shù) c語言將十進制數(shù)轉換為16進制的函數(shù)

c語言編程 把十進制轉換為十六進制

方法一:

成都創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金城江企業(yè)提供專業(yè)的網(wǎng)站設計制作、成都網(wǎng)站設計,金城江網(wǎng)站改版等技術服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

#includeiostream

#include string

using namespace std;

string DecIntToHexStr(long long num)

{ string str; long long Temp = num / 16; int left = num % 16; if (Temp 0) str +=

DecIntToHexStr(Temp); if (left 10) str += (left + '0'); else str += ('A' + left - 10); return str;}

string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()

{ string DecStr; while (cin DecStr) { cout "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:

#includeiostream

#include string

#includevector

#include sstream

#include math.h

using namespace std;int main()

{ string decStr; cin decStr; int num = stoi(decStr); vectorintv; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }

reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }? ?if (temp = 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }

if (temp = 9) { stringstream ss; string strTemp;

ss temp; ss strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout hexStr endl; return 0;}

擴展資料:

還有3種方式可以實現(xiàn),其中兩種是使用系統(tǒng)函數(shù),另一種是直接自己編寫。

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

利用系統(tǒng)函數(shù)有

1. char *? itoa ( int value, char * str, int base );value是要轉化的數(shù)字,str是轉化后的字符串存儲的位置,base是進制數(shù)(但是這個函數(shù)不是標準C函數(shù),有些編譯器是不支持的?。K源a可以為:

char buffer [33]; //用于存放轉換好的十六進制字符串,可根據(jù)需要定義長度 char * inttohex(int aa){? ? itoa (aa, buffer, 16);? ? return (buffer);}

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

char buffer [33]; //用于存放轉換好的十六進制字符串,可根據(jù)需要定義長度 char * inttohex(int aa){? ? sprintf(buffer, "%x", aa);? ? return (buffer);}

3. 自己編寫

如果參數(shù)只要兩位數(shù)的整數(shù),那么很簡單。

代碼如下:

#include stdio.h#include stdlib.h char buffer [33]; //用于存放轉換好的十六進制字符串,可根據(jù)需要定義長度 char * inttohex(int aa)

{? ? sprintf(buffer, "%x", aa);? ? return (buffer);} int main ()? ? ? ? ? ? ?

{? int num;? char * hex_str;? printf ("Enter a number: ");? scanf ("%d",num);? hex_str = inttohex (num);? printf ("Hexadecimal number: %sH\n", hex_str);? return 0;}

給一個C語言字符串轉16進制數(shù)的函數(shù)

首先對于一個整數(shù),無論是十進制還是十六進制,它的值是一定的。

所以,轉換16進制和10進制原理是一樣的,先求出轉換后的值,然后再以十六進制的形式輸出就行了。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

你不會是直接從網(wǎng)頁里面復制就粘貼到編輯器里面吧?

那樣不行的,你自己重新輸入一下。或者先拷貝到文本文檔里面,再從文本文檔里面復制。從網(wǎng)頁里面直接復制有特殊字符的。

還有,程序函數(shù)不能在主函數(shù)里面定義的。

#include stdio.h

int convert(char * str);

void main()

{

char str[20];

int result;

scanf("%s",str); //自己輸入一個十六進制的串

result = convert(str);

printf("%0x",result);

}

int convert(char * str)

{

int i,sum = 0;

for(i = 0;str[i] != '\0';i++)

{

if(str[i]='0' str[i]='9')

sum += sum*16 + str[i]-'0';

else if(str[i]='f' str[i]='a')

sum += sum*16 + str[i]-'a'+1;

else if(str[i]='F' str[i]='A')

sum += sum*16 + str[i]-'A'+1;

}

return sum;

}

如何給一個C語言字符串轉16進制數(shù)的函數(shù)?

多麻煩啊!

看好了:

#includestdio.h

int a;

char *str="1Af";

int main()

{

sscanf(str,"%x",a);//%x為讀入16進制數(shù),大小寫均可。sscanf是從c字符串中讀入變量。

printf("%i",a);

return 0;

}

c語言十進制轉化為十六進制

十進制轉化為十六進制代碼:

#include?"stdio.h"?int?main()

{

int?num=0;

int?a[100];

int?i=0;

int?m=0;

int?yushu;

char?hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

printf("請輸入一個十進制數(shù):");

scanf("%d",num);?while(num0)?{?yushu=num%16;

a[i++]=yushu;

num=num/16;

}?printf("轉化為十六進制的數(shù)為:0x");?for(i=i-1;i=0;i--)//倒序輸出?{m=a[i];

printf("%c",hex[m]);?}?printf("\n");

}

程序運行結果:

擴展資料:

進制轉換由一組數(shù)碼符號和兩個基本因素“基數(shù)”與“位權”構成?;鶖?shù)是指,進位計數(shù)制中所采用的數(shù)碼(數(shù)制中用來表示“量”的符號)的個數(shù)。位權是指,進位制中每一固定位置對應的單位值。

舉例:二進制數(shù)轉換為十進制數(shù)

二進制數(shù)第0位的權值是2的0次方,第1位的權值是2的1次方……

所以,設有一個二進制數(shù):0110 0100,轉換為10進制為:

下面是豎式:

0110 0100 換算成十進制

第0位 0 * 20?= 0

第1位 0 * 21?= 0

第2位 1 * 22?= 4

第3位 0 * 23?= 0

第4位 0 * 24?= 0

第5位 1 * 25?= 32

第6位 1 * 26?= 64

第7位 0 * 27?= 0

公式:第N位2(N)

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

100

用橫式計算為:

0 * 20?+ 0 * 21?+ 1 * 22?+ 0 * 23?+ 0 * 24?+ 1 * 25?+ 1* 26?+ 0 * 27?= 100

0乘以多少都是0,所以我們也可以直接跳過值為0的位:

1 * 22?+ 1 * 25?+1*26?= 100

參考資料:

百度百科-進制轉換

用C語言如何把十進制轉換為十六進制,要求程序中運用函數(shù)

**

程序功能:求二進制,十進制,八進制

創(chuàng)建人:蒲宇林

創(chuàng)建日期:2007年8月13日

**/

#include

void

two();

void

eight();

void

sixteen();

/**主函數(shù)**/

void

main()

{

int

select;

do

{

printf("0

-

退出,1

-

十進制轉二進制,2

-

十進制轉八進制,3

-

十進制轉十六進制");

scanf("%d",select);

switch(select)

{

case

1

:

two();

break;

//十進制轉二進制

case

2

:

eight();

break;

//十進制轉八進制

case

3

:

sixteen();

break;

//十進制轉十六進制

default

:

printf("您的輸入有誤,請重新輸入!");

break;

}

if(select

==

0)

{

break;

}

}while(1);

}

void

two()

{

int

num,

i;

int

arr[20];

printf("\n請輸入一個十進制數(shù):");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//轉換為二進制并存入數(shù)組

{

arr[i]

=

num

%

2;

num

=

num

/

2;

if(num

==

0)

{

break;

}

}

printf("轉換為二進制:");

//打印

for(;

i

=

;

i--

)

{

printf("%d",arr[i]);

}

printf("\n");

}

void

eight()

{

int

num,

i;

int

arr[20];

printf("\n請輸入一個十進制數(shù):");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//轉換為八進制并存入數(shù)組

{

arr[i]

=

num

%

8;

num

=

num

/

8;

if(num

==

0)

{

break;

}

}

printf("轉換為八進制:");

//打印

for(;

i

=

;

i--

)

{

printf("%d",arr[i]);

}

printf("\n");

}

void

sixteen()

{

int

num,

i;

int

arr[20];

printf("\n請輸入一個十進制數(shù):");

scanf("%d",num);

for(

i

=

;

1

;

i++)

//轉換為二進制并存入數(shù)組

{

arr[i]

=

num

%

16;

num

=

num

/

16;

if(num

==

0)

{

break;

}

}

printf("轉換為十六進制:");

//打印

for(;

i

=

;

i--

)

{

switch(arr[i])

{

case

10

:

printf("a");

break;

case

11

:

printf("b");

break;

case

12

:

printf("c");

break;

case

13

:

printf("d");

break;

case

14

:

printf("e");

break;

case

15

:

printf("f");

break;

default

:

printf("%d",arr[i]);

}

}

printf("\n");

}

當前名稱:C語言轉為16進制函數(shù) c語言將十進制數(shù)轉換為16進制的函數(shù)
路徑分享:http://muchs.cn/article24/hjsoje.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、定制開發(fā)網(wǎng)站制作、網(wǎng)站設計、外貿網(wǎng)站建設、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司