【C/C++】进制转换

1.十进制转二-九进制

void DecToNum(int dec, int hex) //dec 代表十进制数,hex代表要转成什么进制
{
    if(dec)
    {
        DecToAny(x / hex, hex);
        printf("%d", x % hex);
    }
}

3.二-九进制转十进制

void NumToDec(int num, int hex)  //num是输入的数字,hex是该数字的进制形式
{
    int dec = 0;
    int k = 1;
    while(num)
    {
        dec = dec + num % 10 * k;
        num = num / 10;
        k = k * hex;  
    }
	printf("%d\n", dec);
}

2.十进制转任意进制

void DecToAny(int dec, int hex)//dec 代表十进制数,hex代表要转成什么进制
{
	if(dec)
	{
		DecToAny(dec / hex,hex);
		if(dec % hex < 10)
		{
			printf("%d", dec % hex);
		}
		else
		{
			printf("%c", dec % hex - 10 + 'A');
		}
	}
}

4.任意进制转十进制

#include<ctype.h>
void AnyToDec(char input[], int hex)//input是输入的数字,hex是该数字的进制形式
{
	int length, i, num, dec = 0;
	length = strlen(input);
	for(i = 0; i < length; i++)
	{
		if(input[i] >= '0' && input[i] <= '9')
		{
			num = input[i] - '0';
		}
		
		else if(isupper(input[i]))    //else if(input[i] >= 'A' && input[i] <= 'Z') 
		{
			num = input[i] - 'A' + 10;
		}
  
		else if(islower(input[i]))    //else if(input[i] >= 'a' && input[i] <= 'z')
		{
			num = input[i] - 'a' + 10;
		}
		dec = dec * hex + num;
	}
	printf("%d\n", dec);
}

5.任意进制转任意进制

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int AnyToDec(char input[], int hex)
{
	int length, i, num, sum = 0;
	length = strlen(input);
	for(i = 0; i < length; i++)
	{
		if(input[i] >= '0' && input[i] <= '9')
		{
			num = input[i] - '0';
		}
		//else if(input[i] >= 'A' && input[i] <= 'Z' || input[i] >= 'a' && input[i] <= 'z')
		else if(isupper(input[i]))
		{
			num = input[i] - 'A' + 10;
		}
		else if(islower(input[i]))
		{
			num = input[i] - 'a' + 10;
		}
		sum = sum * hex + num;
	}
	return sum;
}

void DecToAny(int x, int hex)
{
	if(x)
	{
		DecToAny(x/hex,hex);
		if(x % hex < 10)
		{
			printf("%d", x % hex);
		}
		else
		{
			printf("%c", x % hex - 10 + 'A');
		}
	}
}

int main()
{
	int inhex, outhex;
	char input[32] = {0};
	int x = 0;
	char again = 'y';
	while(again == 'y'|| again == 'Y')
	{
		printf("\nSetting the hexadecimal form of input numbers:");
		scanf("%d", &inhex);
		printf("Input number: ");
		scanf("%s", input);
		x = AnyToDec(input, inhex);
		printf("Target hexadecimal form(2-36):");
		scanf("%d", &outhex);
		printf("Convert resule: ");
		DecToAny(x, outhex);

		printf("\n*******IF CONTINUE [y|n]: ");
		scanf(" %c", &again);
	}
	return 0;
}

(未完待续)

猜你喜欢

转载自blog.csdn.net/qq_42379345/article/details/81264964