C语言十六进制转八进制
生活随笔
收集整理的這篇文章主要介紹了
C语言十六进制转八进制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路:將十六進制先轉為十進制再轉為八進制
十六進制轉十進制:與二進制轉十進制類似。對十六進制每個數從左往右依次乘16的0,1,2,......并相加得到相應的十進制。
比如:對123ABC,12×16(0)+11×16(1)+10×16(2)+3×16(3)+2×16(4)+1×16(5)
十進制轉八進制:與十進制轉二進制類似。十進制的數對8取余并保存,最后將所得所有余數倒著輸出,所得結果即為所得八進制結果。
比如:對39,39%8=7,39/8=4,4%8=4,4/8=0。余數為74,所以所得八進制為47。
以下是代碼詳情:
#include<stdio.h> #include<string.h> #include<math.h> int main() {char a[100][100],b[100][100];int i,j,m,k;long long n=0;printf("請輸入需要計算的數的個數:\n");scanf("%d",&m);for(k=0;k<m;k++)//要輸入m行的十六進制{printf("請輸入第%d個十六進制數:\n",k+1);scanf("%s",a[k]);for (i=0;a[k][i]!='\0';i++)//十六進制轉十進制{if(a[k][i]>='A' && a[k][i]<='F')//將十六進制的字母轉為數字方便計算a[k][i]=(a[k][i]-'A')+10+'0';n+=((a[k][i]-'0')*(pow(16,strlen(a[k])-1-i)));//轉十進制}for(j=0;;j++)//十進制轉為八進制并存入數組B中{b[k][j] = n % 8;n = n / 8;if (n == 0){break;}}}for(k=0;k<m;k++)//輸出八進制{printf("所得第%d個八進制數為:",k+1);for (j = strlen(b[k])-1; j >= 0; j--)//從后往前倒著輸出{printf("%d", b[k][j]);}printf("\n");}return 0; }小編的編程還欠提升,如果有什么小錯誤,還請大家幫我指出來,我后期我會努力改進滴~謝謝大家啦~
希望該內容能幫大家更好的理解進制轉換~
總結
以上是生活随笔為你收集整理的C语言十六进制转八进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于arduino uno + WS28
- 下一篇: 23种PHP开发工具集合