c語言16進制轉換10進制
1. c語言16進制轉換為10進制數的函數、
#include<stdio.h>
voidmain()
{
intx;
scanf("%x",&x);
printf("%d ",x);
}
直接輸入4位16進制數,中間不能加空格。
2. c語言中16進制轉換為十進制
最簡單的使用scanf()函數抄和printf()函數進行格式轉換,以16進制格式輸入,再以10進制格式輸出。
程序代碼如下:
#include<stdio.h>
int main()
{
int a=0;
int i=0;
scanf("%x",&a);
printf("%d",a);
return 0;
}
運行結果:
(2)c語言16進制轉換10進制擴展閱讀:
scanf函數與printf函數的用法很像,都是以格式化的形式進行操作,例如上述程序中scanf("%x", &a);就是將輸入數據以十六進制格式存儲到變數a中。
"%x"是將字元串A23CD以十六進制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字元串A23CD以十進制形式輸入a中,這顯然是錯誤的,因為將A23CD轉換為十進制的時候,無法解析A,CD等字元,所以得出的結果就是錯誤的。
3. C語言 十六進制字元串轉十進制
十進制轉十六進制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 0:shi='0';break;
case 1:shi='1';break;
case 2:shi='2';break;
case 3:shi='3';break;
case 4:shi='4';break;
case 5:shi='5';break;
case 6:shi='6';break;
case 7:shi='7';break;
case 8:shi='8';break;
case 9:shi='9';break;
case 10:shi='A';break;
case 11:shi='B';break;
case 12:shi='C';break;
case 13:shi='D';break;
case 14:shi='E';break;
}case 10:shi='A';break;
4. c語言16進制轉換為10進制數的函數是什麼
1、可以根據16進制轉10進制的演算法(即各位位碼值乘以位權之和)來實現該功能。
2、具體實現方法可以參考如下程序:
#include<stdio.h>
voidmain()
{
inthe;
intre=0;//保存轉換為10進制的結果
intk=16;//16進制
intn=1;//位權
scanf("%d",&he);//接收用戶輸入的16進制數,不含0x前綴
while(he!=0)
{
re+=(he%10)*n;//取出各位位碼值,並乘以對應的位權值
he/=10;//去掉16進制數的最低位,次低位變為最低位
n*=k;//位權乘以16
}
printf("%d",re);//輸出轉換後的結果
}
5. 如何用C語言將一個16進制數轉換成10進制數,要求用函數。
**
程序功能:求二進制,十進制,八進制
創建人:蒲宇林
創建日期: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");
}
6. c語言16進制與10進制的轉換
int
HtoD(char
*a){
int
num=0,i;
for(i=0;
i
='0'&&*(a+i)<='9'){
//如果第i位是數字字元
num
=
num*16
+
*(a+i)-'0';
//*16是原有數字進一位,後面部分是把數內字字元轉為相應容數值
}else
if(*(a+i)>='A'&&*(a+i)<='Z'){
//如果第i位是十六進制字元
num
=
num*16
+
*(a+i)-'A'+10;
//把大寫字母轉為相應數值
}else
if(*(a+i)>='a'&&*(a+i)<='z'){
//若是小寫字母
num
=
num*16
+
*(a+i)-'a'+10;
//把小寫字母轉為相應數值
}else{
return
-1;//表示輸入錯誤的數,出錯提示
}
}
return
num;
//返回轉換後的結果
}
7. 十六進制轉十進制,C語言
#include<stdio.h>
#include <stdlib.h> //system 包含
#include<math.h>
double transition(char*); //聲明還是提到函數外
int main(){
char str[10];
double a;
printf("Enter the hexadecimal number: ");
gets(str);
a=transition(str);
printf("%.0lf\n",a); //輸出double要用%lf
system("pause");
return 0; //main返回
}
double transition(char str[]){
int i=0,n,x;
double sum=0;
int trans_char_dig(char);
while(str[i]!=0){
i++;
}
n=i;
while(i>0){
x=trans_char_dig(str[n-i]);
sum=x*pow(16,i-1)+sum;
i--;
}
return sum;
}
int trans_char_dig(char c){
if(c>=48&&c<=57){
return c-48;
}
else if(c>=65&&c<=70){
return c-55;
}
else if(c>=97&&c<=102){
return c-87;
}
else{
printf("error!");
exit(0);
}
}
8. C語言寫一個函數,16進制轉十進制
C語言16進制轉十進制具體函數如下:
#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("請輸入一個十進制內整數:");
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("\n");
}
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。