導航:首頁 > 操作系統 > 單片機c語言16進制轉10進制

單片機c語言16進制轉10進制

發布時間:2022-11-19 13:03:51

㈠ 51單片機C語言里 怎樣將16進制 直接化成 10進制

我這兒有一個進制轉換的程序,你可以參考一下:
#include<stdio.h>
#include<math.h>
#include<string.h>
int count=0;
void *tentoBOH(int a,int n)
{
int t,i=0,j,str[50],*p;
char str1[50],*q,temp;
while(a!=0)
{
t=a%n;
if(n==16)
{
if(t<=9&&t>=0)str1[i++]=(char)('0'+t);
if(t>9&&t<16)str1[i++]=(char)('A'-10+t);
}
else
str[i++]=t;
a=a/n;
count++;
}
for(i=0,j=count-1;i<count/2;i++,j--)
{
t=str[i];
str[i]=str[j];
str[j]=t;
temp=str1[i];
str1[i]=str1[j];
str1[j]=temp;
}
if(n==16)
return q=str1;
else
return p=str;
}
int BOHtoTen(char str[],int n)
{
int len,i,a=0;
char t;
len=(int)strlen(str);
for(i=0;i<len/2;i++)
{
t=str[i];
str[i]=str[len-1-i];
str[len-1-i]=t;
}
i=0;
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
a+=(str[i]-'0')*(int)pow(n,i);
if(str[i]>='a'&&str[i]<='f')
a+=(str[i]-'a'+10)*(int)pow(n,i);
if(str[i]>='A'&&str[i]<='F')
a+=(str[i]-'A'+10)*(int)pow(n,i);
i++;
}
return a;
}
void main()
{
int a,i,n,m,*p;
char *q,str[20];
printf("請輸入一個十進制數a= ");
scanf("%d",&a);
printf("請輸入一個進制數n= ");
scanf("%d",&n);
if(n==16)q=tentoBOH(a,n);
else p=tentoBOH(a,n);
printf("輸出正整數%d的%d進制為:",a,n);
if(n==16)
for(i=0;i<count;i++)
printf("%c",*(q+i));
else
for(i=0;i<count;i++)
printf("%d",*(p+i));
printf("\n請輸入字元串str= ");
scanf("%s",str);
printf("\n請輸入該字元串的進制m= ");
scanf("%d",&m);
printf("\n該%d進制數%s轉換成十進制數為:%d\n",m,str,BOHtoTen(str,m));
}

㈡ 單片機C51課程設計 16進制轉為10進制

轉換當然用除10000得到萬位再減去萬位,同理利用上面的數得到千位,百位十位最後的余數就是個位。
抽取後四位難道不是與下0XFFFF搞定嗎
延遲兩秒的話可以用每次按鍵啟動或刷新一個定時器來搞定,至於是在中斷服務程序內搞還是僅僅做個標記就看情
現在情況是你能顯示數字了,那麼你就應該能得到輸入的數字了吧。(方便起見就不用輸入來觸發中斷了)程序主循環結構是:1、定時掃描輸入I/O狀態,定時的作用就是用來做防顫處理的,在間隔幾毫秒的過程後,如果按鍵狀態還是變化了,才表示實際按動過了。2、上面如果檢測到有變化,則將定時器的數字清零,在這個定時器的服務程序里執行將一個標志置位。然後再執行內存中輸入數字的變化,和顯示的內容。3、判斷是否有定時器中斷觸發的標志,有的話就執行將數轉換成BCD碼(就是轉換成10進制數)的過程,並顯示出來。如此就完成了。
至於定時器中斷怎樣搞,和匯編相比,更簡單了,直接初始化定時器的特殊定時器,再在程序里定義中斷服務程序就好了。我估計你的輸入數字還沒能整理,那樣的話在上面的第2步里,的第二個操作中先將原數乘16,再加上後來添的數就OK了,顯示的話直接對這個數進行處理就好了。

㈢ 51單片機c語言十六進制數轉化成十進制數

先轉化為二進制數,再轉換為十進制數。你的Ox0a是寫法上有錯誤,Ox可能是代表8進制數,或是8421BCD碼。具體請查找相應碼表。

㈣ c語言16進制與10進制的轉換

這個函數的int HtoD(char *a);就是將16進制的數用字元數組保存,把數組首地址作為參數傳遞給函數,函數返回轉換後的10進制整型數值。

詳細說明,我寫在備注里了,你看以參考。

#include<stdio.h>
#include<string.h>
intHtoD(char*a)//將16進制的數字用字元串保存,並將字元串首地址作為參數傳遞
{
intnum=0,i;
for(i=0;i<strlen(a);i++)//迭代迭代次數為a數組的長度形參a是指針,初值是指向字元數組的首地址,也就是指向16進制數字的左邊第1位
{
//每次迭代取指針指向的地址值進行判斷,同時指針不斷往右移動
if(*(a+i)>='0'&&*(a+i)<='9')//如果當前位是0~9的數字,那麼總數值num累加同時前值*16(因為左邊是高位,從高位往低位數,每多1位高位就*16)
num=num*16+*(a+i)-'0';
elseif(*(a+i)>='A'&&*(a+i)<='Z')//如果當前位是大寫字母A~Z,轉換成10進制數值,再累加
num=num*16+*(a+i)-'A'+10;
elseif(*(a+i)>='a'&&*(a+i)<='z')//如果當前位是小寫字母a~z,轉換成10進制數值,再累加
num=num*16+*(a+i)-'a'+10;
else
return-1;//表示輸入錯誤的數
}
returnnum;
}
intmain()
{
chara[]="1F";
printf("1F=%d",HtoD(a));//這里我寫了簡單的調用,列印結果:1F=31
return0;
}

㈤ 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;

}

運行結果:

(5)單片機c語言16進制轉10進制擴展閱讀:

scanf函數與printf函數的用法很像,都是以格式化的形式進行操作,例如上述程序中scanf("%x", &a);就是將輸入數據以十六進制格式存儲到變數a中。

"%x"是將字元串A23CD以十六進制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字元串A23CD以十進制形式輸入a中,這顯然是錯誤的,因為將A23CD轉換為十進制的時候,無法解析A,CD等字元,所以得出的結果就是錯誤的。

㈥ 單片機C語言 十六進制轉換為十進制

8位的十六進制數temp(0~255)
百位 =temp/100;
temp=temp%100;//取余數
shi=temp/10;
ge=temp%10;

16位的也是一樣,只是先除以10000

㈦ 在單片機C語言怎麼把16進制數變成10進制發到串口

串口都是用16進制發送的,有兩種辦法,

  1. 在接收到數據之後你把16進制轉為10進制就可以了,比如你發送的十進制10,傳送的時是十六進制0x0A,接收到數據後轉成10進制 0AH = 10。

  2. 在發送時把數據轉換成BCD碼,發送十進制10,轉成BCD碼十六進制就是0x10,接收到數據時顯示的就是10H。

BCD碼轉換網路一下可以。

㈧ 的51單片機中c語言中如何將十六進制數轉化為十進制

如果你僅僅是使用轉換結果的話,那麼賦值語句可以自動轉換。比如:
unsigned
char
x,y;
y=0x5a;
x=y;
你輸出格式是10進制,那麼變數表示的就是十進制數。

㈨ c語言十六進制轉十進制方法

可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型轉換為其他進制的字元串參考代碼:

int main(){int a=110;char p;_itoa(110,p,16); //16表示16進制,還可以用2、8、10printf("%s",p);return 0;}

GCC,GNU組織開發的開源免費的編譯器,MinGW,Windows操作系統下的GCC,Clang,開源的BSD協議的基於LLVM的編譯器。

(9)單片機c語言16進制轉10進制擴展閱讀:

運算符號:

比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補 0)位移。例如,將 11100011 右移 3 比特,算術右移後成為 11111100,邏輯右移則為 00011100。因算術比特右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術比特右移。

運算符的優先順序從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。

閱讀全文

與單片機c語言16進制轉10進制相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163