ordem de empilhamento para alcançar qualquer conversão hex

análise de ideias

Estamos todos familiarizados com qualquer conversão entre binário e decimal, pensamento binário é que qualquer conversão de ponte decimal, vire primeiro a números decimais, decimal e, em seguida, vire para a banda-alvo.
Transformar qualquer decimal binário, por exemplo: 45 (8), a casa decimal, que 4x8 = Resultado 1. + 5x8 0 = = 32. 5 + 37 [; que pode ser obtida por cargas cíclicas.
Decimais transformar qualquer banda, tais como 55, se transformar em octal, necessidade de usar short divisão, como mostrado
Aqui Insert Picture Descriçãorestante da primeira adição ao contrário na baixa, após isso avançada do relacionamento e a pilha é muito semelhante, podemos usar a pilha para alcançar.

O código principal

int HexAnyToTen(char * num,int hex_begin){
	int i = 0,j = 0,k = 1;
	int counter = 0;
	int prior = 0;
	int length = strlen(num);
	printf("%d",length);
	for(i=0;i < length; i++)
	{
		k = 1;
		for(j=0;j<length-1-i;j++)
		{
			k *= hex_begin;
		}
		if(num[i] >= 48&&num[i] <= 57)
		{
			counter += (num[i] - '0')*k;
			prior = num[i] - '0';
		}
		else if(num[i] >= 65&&num[i] <= 90){
			counter += (num[i] - 55)*k;
			prior = num[i] - 55;
		}
		else if(num[i] >= 97&&num[i] <= 122){
			counter += (num[i] - 87)*k;
			prior = num[i] - 87;
		}
		else{
			if(i==0){
				continue;
			}
			else{
				counter = counter - prior*k*(hex_begin -1);
			}
		}
	}
	printf("%d\n",counter);
	return counter;
}

// 十进制转任意进制
void    HexToTenToAny(int num_hex_ten,int hex_after)
{
	SeqStack * s;
	int x;
	s = initSeqStack();
	while( num_hex_ten )
	{
		push(s, num_hex_ten % hex_after);
		num_hex_ten /= hex_after;
	}

	printf("转换成目的进制后:");

	while(!isEmpty(s))
	{
		x = getTop(s);
		pop(s);
		if(x > 9){
			printf("%c",x+87);
		}
		else{
			printf("%d",x);
		}
	}

	printf("\n");
}

entrada de amostra

87475    // 待转换的数字
16			//待转换数字的进制
8				//目的进制

Exemplo de saída

转换成目的进制后:554101

Todos os códigos

água pequena mês de duração Github

Também envolve algum processamento lógica incomum, não sei onde fazer perguntas bem-vindos.

Publicado 84 artigos originais · ganhou elogios 250 · Exibições 150,000 +

Acho que você gosta

Origin blog.csdn.net/ygdxt/article/details/88601861
Recomendado
Clasificación