任意进制转换算法

简介:
#include <stdio.h>

/************************************************************************/
/* 功能:实现任意进制之间的转换
/* 参数:pSrc--指向源进制数,字符数组存放
/*       pDst--指向转换完成后的进制数,以字符数组形式存放
/*       src --源进制数的进制类型,如十进制数的src值为10
/*       dst --需要转换成的进制类型
/************************************************************************/
void Convert(char *pSrc, char *pDst, long src, long dst)
{
	long i, j, k, t, number = 0;
	char temp;

	for (i = 0; pSrc[i] != '\0'; i++)
	{
		if (pSrc[i] >= '0' && pSrc[i] <= '9') // 如果是数字
		{
			t = pSrc[i] - '0';
		}
		else // 否则就是字母
		{
			t = pSrc[i] - 'A' + 10;
		}
		number = number * src + t; // 将源进制数组转换成十进制数
	}

	i = 0;
	while (number) // 进行进制转换
	{
		t = number % dst;
		if (t >= 0 && t <= 9) // 如果是数字
		{
			pDst[i++] = t + '0';
		}
		else // 那么就是字母
		{
			pDst[i++] = t + 'A' - 10;
		}
		number /= dst;
	}

	// 将转换完成的进制数按自然顺序排放
	for (j = 0, k = i - 1; k >= j; j++, k--)
	{
		temp = pDst[j];
		pDst[j] = pDst[k];
		pDst[k] = temp;
	}
	pDst[i] = '\0';
}

int main()
{
	char s1[1000], s2[1000];
    long src, dst;

	while (scanf("%s%ld%ld", s1, &src, &dst) != EOF)
	{
         Convert(s1, s2, src, dst);
		 printf("%s\n", s2);
	}

	return 0;
}

目录
相关文章
|
算法
《零基础学算法》(第二讲)进制转换
《零基础学算法》(第二讲)进制转换
94 0
《算法基础学习》进制转换(入门)
算法学习 《算法零基础100讲》(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客https://blog.csdn.net/WhereIsHeroFrom/article/details/120875977 习题解题报告
《算法基础学习》进制转换(入门)
|
算法 BI Shell
算法解密84位加密,进制转换解密脚本
十六进制转十进制转二进制,根据规则进行转换后拼接
410 0
|
算法 人工智能
算法学习之路|进制转换
输入一个十进制数N,将它转换成R进制数输出。
1159 0
|
算法 Python
结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn # Release 3.0 # chengang882 @ 2016-12-20 # 它可以将十进制转换成二进制,八进制和十六进制 # Completed impleme...
1010 0
|
12天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
145 80

热门文章

最新文章