⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 实现不同进制之间的转化
💻 C
字号:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "winsock.h"
#include "direct.h"
#include "tlhelp32.h"
#include "winuser.h"




int Muti(int Num,int time)
{
	int ret=1;

	while ((time--)>0) 
	{
		ret*=Num;
	}

	return ret;
}

int CharToValue(char ch)
{
	if ((ch<='9')&&(ch>='0'))
	{
		return ch-'0';
	}
	else if ((ch<='z')&&(ch>='a'))
	{
		return (ch-'a')+10;
	}
	else if ((ch<='Z')&&(ch>='A')) 
	{
		return (ch-'A')+10;
	}

	return -1;
}

int ValueToChar(int value)
{
	if ((value>=0)&&(value<=9))
		return value+'0';
	
	if ((value>9)&&(value<36) )
	{
		return (value-10)+'a';
	}

	return -1;
}

int NumChange(char* pSNum,int stype,char* pDNum,int dtype)
{
	int slen,dlen,len;
	int tt,pp,Num=0;
	int last;
	char ss[4],ch,*pH,*pL;


	if (!pSNum||!pDNum||(stype<2)||(stype>35)||(dtype<2)||(dtype>35)) 
		return 0;

	pH=pL=NULL;
	slen = strlen(pSNum);
	dlen = strlen(pDNum);

	//原进制和目的进制一制,直接拷贝
	if (stype==dtype) 
	{
		strcpy(pDNum,pSNum);
		return 1;
	}

	//都转化为10进制
	while (*pSNum) 
	{
		pp = CharToValue(*pSNum);
		if ((pp>=stype)||(pp<0))
			return 0;
		slen--;
		tt = Muti(stype,slen);		
		Num+= pp*tt;
		pSNum++;		
	}

	//转化为目的进制
	sprintf(pDNum,"");
	while (Num>0) 
	{
		last=Num%dtype;
		Num/=dtype;
		ch = ValueToChar(last);
		if (ch<0)
			return 0;
		sprintf(ss,"%c",ch);
		strcat(pDNum,ss);
	}

	//反串
	len = strlen(pDNum);
	len--;
	pH = pDNum;
	pL = pDNum+len;
	while (pH<pL) 
	{
		ch = (*pH);
		(*pH) = (*pL);
		(*pL) = ch;
		pH++;
		pL--;
	}

	return 1;
}


int main()
{
	char ss[32]={""};
	char dd[32]={""};
	int i,tt,pp,ww,ww1,ww2;
	int cc;
	int pl[100];

	memset(pl,0,sizeof(pl));
	ww=ww1=ww2=0;

	ww1=clock();

	for(i=0;i<100000;i++)
	{

		sprintf(ss,"%d",i);
		tt = clock();
		NumChange(ss,10,dd,2);
		pp = clock();
		printf("ss=%s,\t\tdd=%s\t\n",ss,dd);


		cc = pp-tt;

		pl[cc]++;
	}

	ww2=clock();
	ww=ww2-ww1;

	return 1;
}
 





















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -