欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

十进制转换成十六进制、八进制、二进制。

程序员文章站 2024-03-11 22:03:01
...

十进制转换成十六进制、八进制、二进制

举例验证十进制转二进制,十进制转换十六进制:
十进制转换成十六进制、八进制、二进制。

代码演示:

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