十進制轉換成十六進制、八進制、二進制。

十進制轉換成十六進制、八進制、二進制

舉例驗證十進制轉二進制,十進制轉換十六進制:
在這裏插入圖片描述

代碼演示:

#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 用的就巧妙啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章