M进制转换N进制(Java和C)

1. Java

利用两个库方法即可:
1. Integer方法
public static String toString(int i, int radix)
将目标数据i 转换成radix进制的字符
2. Integer.parseInt(String str,int radix)
将目标字符串转换成radix进制的整型数据

Java进制转换;

package integerDemo;import java.util.Scanner;public class integerDemo
{public static void main(String[] args) throws Exception{Scanner input = new Scanner(System.in);System.out.println("输入待转换数据:");String str = input.next();System.out.println("待转换数据进制:");int hexM = input.nextInt();System.out.println("目标进制:");int hexN = input.nextInt();if (hexM > 36 || hexM < 2 || hexN > 36 || hexN < 2)throw new Exception("wrong para,2==36");hexTo(str, hexM, hexN);}public static void hexTo(String str, int hexM, int hexN){System.out.println(Integer.toString(Integer.parseInt(str, hexM), hexN));}}

2. C

先用乘法换成十进制数,然后辗转相除获取转换进制数(有限制,不能超出整型最大取值范围)

#include 
#include 
#define M 100
#define N 200 
void main()
{void mToN(int m, char* strM, int n, char* strN);char strM[M], strN[N];int m,n;gets(strM);//输入scanf("%d %d",&m,&n);//可以加上对参数的约束mToN(m,strM,n,strN);puts(strN);//输出
}
void mToN(int m, char* strM, int n, char* strN) 
{int i = 0;char c, *p = strN;//乘法获取10进制数while (*strM != '\0')i = i*m + *strM++ - '0';//辗转取余while (i) {*p++ = i % n + '0';i /= n;}*p-- = '\0';//加上结尾标识,p指向最后一个字符//逆置余数序列或者逆向输出也可以while (p > strN) {c = *p;*p-- = *strN;*strN++= c;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部