import argparse def convert(): print('a') parse = argparse.ArgumentParser() parse.add_argument('-ij','--ij' ,type=init, help='输入的数字的进制') parse.add_argument('-i', '--i',type=int, help='输入的数字') parse.add_argument('-oj','--oj', type=int, help='转换为多少进制') args = parse.pairse_args() in_10 = int(str(args.i),args.ij) if args.oj == 2: output = bin(in_10) if args.oj ==8: output = oct(in_10) if args.oj == 10: output = in_10 if args.oj == 16: output = hex(in_10) print("输入{}进制的数字{},目标{}进制,转换后的数字为{}".format(args.ij,args.i,args.oj,output)) if __name__ == '__main__': convert()
//求大佬指导更好的存储数据的算法//
#include
#include
#include
double ElseToTen(int JZ);//将2—36进制转为10进制
void TenToElse(unsigned long Date);//将10进制转为2—36进制
void ElseToElse();
#define N 20//输入的数据最大支持大位数//可自由更改
int main()
{
int Choose2;
int Choose1;
unsigned long Date;
double sum;
do
{
printf("1.将任意进制(2-36)的数转换为10进制数\n");
printf("2.将10进制的数转为任意进制(2-36)\n");
printf("3.将进制为(2-36)的数转换为进制为(2-36)的数\n");
printf("0.退出\n");
printf("请输入你的选择\n");
scanf("%d",&Choose1);
system("cls");
switch(Choose1)
{
case 1:printf("请输入你想要转换几进制数:\n");
scanf("%d",&Choose2);
sum=ElseToTen(Choose2);
printf("转换后的结果为:\n%.0lf\n",sum);
system("pause");
system("cls");
break;
case 2:
printf("请输入一个十进制数(0~4294967295)\n");
scanf("%ld",&Date);
TenToElse(Date);
system("pause");
system("cls");
break;
case 3:ElseToElse();
system("pause");
system("cls");
break;
case 0:exit(0);
}
}while(Choose1!=0);
}
double ElseToTen(int JZ)
{
char a[N];
int i;
int length;
int j;
double sum=0;
getchar();
printf("请输入一个%d进制数\n",JZ);
gets(a);
//*******获取输入的字符串长度*********//
length=0;
while(a[length++]!='\0')
{
}
length--;
//************************************//
if(length<N)
{
for(i=length-1,j=N-1;i>=0;i--,j--)
a[j]=a[i];
for(i=0;i<=N-1-length;i++)
a[i]='0';
}
i=N-length;
while(i<=N-1)
{
if(a[i]>='0'&&a[i]<='9')
sum+=(a[i]-'0')*pow(JZ,N-1-i);
else if(a[i]>='a'&&a[i]<='z')
sum+=(a[i]-'a'+10)*pow(JZ,N-1-i);
i++;
}
return sum;
}
void TenToElse(unsigned long Date)
{
char a[N];
int i;
int key;
printf("请输入你想要转换为几进制:");
scanf("%d",&key);
i=N;
while(Date)
{
if(Date%key<10)
a[i]=Date%key+'0';
else
a[i]=Date%key-10+'a';
Date=Date/key;
i--;
}
while(i<=N)
putchar(a[++i]);
putchar('\n');
}
void ElseToElse()
{
short k1;
long Date;
printf("原数的进制:");
scanf("%d",&k1);
Date=(long)ElseToTen(k1);
TenToElse(Date);
}