十進制轉換成十六進制、八進制、二進制
舉例驗證十進制轉二進制,十進制轉換十六進制:
代碼演示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void trans(char array[],int number,int scale,int * len)
{
int i = 0;
while(number)
{
array[i] = number % scale;
if(array[i] > 9)
{
array[i] += 'A' - 10;
}
else
{
array[i] += '0';
}
number = number / scale;
i++;
}
*len = i;
}
int main()
{
int number = 0;
printf("input a number:");
scanf("%d",&number);
int scale = 0;
printf("input scale:");
scanf("%d",&scale);
char * array = NULL;
array = malloc(sizeof(char)*32);
memset(array,0,sizeof(array));
int i = 0;
switch(scale)
{
case 2:
trans(array,number,scale,&i);
break;
case 8:
trans(array,number,scale,&i);
break;
case 16:
trans(array,number,scale,&i);
break;
}
while(i--)
{
printf("%c",array[i]);
}
printf("\n");
}
總結:1.一直再想局部變量的問題(離開函數內存就被釋放),所以在堆區開闢了一塊內存,一直到程序結束才釋放內存。2.當轉換大於9的數字的時候,需要A,B,C,D,E,F.所以要用到ASCII碼,+‘0’ 和 +‘A’ -10 用的就巧妙啦。