當前位置:首頁 » 編程語言 » c語言十進制轉換為十六進制

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

發布時間: 2022-10-04 23:22:44

『壹』 c語言十進制轉十六進制數

C語言十進制轉十六進制數的源代碼如下:

#include<bits/stdc++.h>

using namespace std;

void IntZh0x(int n)

{int s=n%16;

if(n/16!=0) IntZh0x(n/16);

if(s>9)

{

if(s==15) cout<<"F";

else if(s==14) cout<<"E";

else if(s==13) cout<<"D";

else if(s==12) cout<<"C";

else if(s==11) cout<<"B";

else if(s==10) cout<<"A";

}

else cout<<s;

}

int main(){

int n;

cin>>n;

IntZh0x(n);

return 0;

}

(1)c語言十進制轉換為十六進制擴展閱讀

1、十六進制數轉換成十進制數解,其值為各個位碼乘以位權然後完全相加。

2、十六進制就是把 4 個二進制位組合為一位來表示,每一位有0b0000 ~ 0b1111 共 16 個值,用 0 ~ 9 再加上 A ~ F(或 a ~ f)表示,那麼它自然就是逢十六進位,它本質上同二進制是一樣的,是二進制的一種縮寫形式。

『貳』 求c語言將十進制數轉換為16進制的函數

c語言將十進制數轉換為16進制的函數:

#include<stdio.h>

main()
{
int u10;
char u16[10];
int w=0,a,b,i;

printf("請輸入一個數字-->");
scanf("%d",&u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b<10)
{
u16[w]='0'+b;
}
else
{
u16[w]='A'+b-10;
}
a=a/16;
w++;
}
}
printf(" ");
printf("%d(10)轉換為16進制數字為:",u10);
for(i=w-1;i>=0;i--)
{
printf("%c",u16[i]);
}
printf(" ");
}

(2)c語言十進制轉換為十六進制擴展閱讀:

十進制數轉換為二進制數方法

十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。

1. 十進制整數轉換為二進制整數 十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。

2.十進制小數轉換為二進制小數

十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。

然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。

『叄』 在C語言中如何將10進制轉換成16進制

根據10進制轉換為16進制的規則,編寫C語言程序將10進制數轉換為16進制數。


具體實現方法可參考如下程序:

#include<stdio.h>
voidmain()
{
inti,x;//x表示欲轉換的10進制數
intdata[10],index=0;//data數組存放轉換後的16進制數,index表示下標
scanf("%d",&x);//接受欲轉換的10進制數
for(i=0;i<10;i++)//對數組data進行初始賦值操作
data[i]=0;
printf("%d對應的16進制為:",x);
//反復相除取余,並將余數存放在data數組中
while(x>0)
{
data[index]=x%16;
x=x/16;
index++;
}
//逆序輸出data數組中的元素,即為10進制數對應的16進制數
for(i=index-1;i>=0;i--)
printf("%d",data[i]);
printf(" ");
}

『肆』 c語言十進制轉化為十六進制

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

#include"stdio.h"intmain()

{

intnum=0;

inta[100];

inti=0;

intm=0;

intyushu;

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

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

scanf("%d",&num);while(num>0){yushu=num%16;

a[i++]=yushu;

num=num/16;

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

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

}

程序運行結果:

(4)c語言十進制轉換為十六進制擴展閱讀:

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

舉例:二進制數轉換為十進制數

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

所以,設有一個二進制數: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語言編程 把十進制轉換為十六進制

方法一:

#include<iostream>
#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;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; 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;}

(5)c語言十進制轉換為十六進制擴展閱讀:


還有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){ itoa (aa, buffer, 16); return (buffer);}

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

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

3. 自己編寫

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

代碼如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用於存放轉換好的十六進制字元串,可根據需要定義長度 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 ", hex_str); return 0;}

『陸』 C語言編程:怎麼把一個十進制數轉換成為一個十六進制數

我們剛學了棧,我做了一個任意進制轉換的程序,你看一下,,即使你沒學,但思想是一樣的
假入你輸入的是m,可在設一個數組用來裝余數,完整程序如下:
#include<stdio.h>
void
main()
{
int
a[10],m,i=0;
printf("please
ennter
a
number\n");
scanf("%d",&m);
while(m!=0)
{
a[i++]=m%16;//在裝余數的同時用i統計余數的個數
m=m/16;
}
for(i=i-1;i>=0;i--)
{
switch(a[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",a[i]);
}
}
}

『柒』 C語言 十進制轉十六進制

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int what,input;
void toall(int tmp,int a,int b)
{
int p;
char str[]={"0123456789ABCDEF"};
char arr[32]={""};
int i=31;
if(tmp==0)
return;
while(tmp!=0)
{
p=tmp&a;
arr[i--]=str[p];
tmp=tmp>>b;
}
printf("%d轉換為%d進制為:",input,what);
for(int j=i+1;j<32;j++)
printf("%c",arr[j]);
}
int main()
{
while(1)
{
printf("十進制轉二進制-------->2 ");
printf("十進制轉八進制-------->8 ");
printf("十進制轉十六制-------->16 請選擇:");
scanf("%d",&what);
if(what!=2&&what!=8&&what!=16)
printf("輸入的數不合法!請重新輸入! ");
else break;
}
printf("輸入需要轉換的十進制數字:");
scanf("%d",&input);
switch(what)
{
case 2:toall(input,1,1);break;
case 8: toall(input,7,3);break;
case 16: toall(input,15,4);break;
}
getch();
}

我這剛寫了個轉各進制的代碼,你可以看看

-物聯網校企聯盟技術部

『捌』 C語言十進制轉十六進制

其實根本不用這個的,輸出函數printf有X是代表輸出16進制的數,可以直接調用,那樣就能將10進制變成16進制!例如:
#include <stdio.h>
main ()
{
int a;
scanf ("%d",&a);
printf ("%X",a);
}

『玖』 如何用c語言實現10進制轉換成16進制

#include<stdio.h>

#defineLEN100

char*decimal2Others(intvalue,char*string,intradix){/*十進制數轉任意進制*/
/*除基數取余法:十進制數不斷除以進制基數直至為零,每次相除取得余數之逆序即為轉換結果*/
intremain,i=1,j=0;
inttemp[LEN];

while(value){/*除基數取余*/
remain=value%radix;
value=value/radix;
temp[i++]=remain;
}

while(--i){/*逆序存儲*/
if(temp[i]>9)
string[j++]=temp[i]-10+'a';/*十以上進制處理*/
else
string[j++]=temp[i]+'0';
}
string[j]='';
returnstring;
}

intmain(void){
intn;
charstring[LEN];

printf("請輸入十進制數:");
scanf("%d",&n);
putchar(' ');
puts("================================================================================ ");

printf("十六進制轉換結果:");
decimal2Others(n,string,16);
puts(string);
putchar(' ');

getch();/*屏幕暫留*/
return0;
}

運行結果

『拾』 用C語言如何把十進制轉換為十六進制,要求程序中運用函數

**
程序功能:求二進制,十進制,八進制
創建人:蒲宇林
創建日期:2007年8月13日
**/
#include

void
two();
void
eight();
void
sixteen();
/**主函數**/
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請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為二進制並存入數組
{
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
{
break;
}
}
printf("轉換為二進制:");
//列印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
eight()
{
int
num,
i;
int
arr[20];
printf("\n請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為八進制並存入數組
{
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
{
break;
}
}
printf("轉換為八進制:");
//列印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
sixteen()
{
int
num,
i;
int
arr[20];
printf("\n請輸入一個十進制數:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//轉換為二進制並存入數組
{
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
{
break;
}
}
printf("轉換為十六進制:");
//列印
for(;
i
>=
0
;
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");
}

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:82
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:956
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:975
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:798
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:664
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:432
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:342
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:127
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301