进制转换 java描述

题目描述

输入格式

输出格式

输入输出样例

思路

转换为十进制:

转换为目标进制

完整代码


题目描述

请你编一程序实现两种不同进制之间的数据转换。

输入格式

共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)n(2≤n≤16),第二行是一个n进制数,若n>10n>10则用大写字母A-FA−F表示数码10-1510−15,并且该nn进制数对应的十进制的值不超过10000000001000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)m(2≤m≤16)。

输出格式

一个正整数,表示转换之后的mm进制数。

输入输出样例

输入     

16

FF

2

输出

255

11111111

思路

先转换成十进制,再由十进制转化为其他进制

转换为十进制:

public static int todecimal(char a)
	{
		if(a=='A')  return 10;
		if(a=='B')  return 11;
		if(a=='C')  return 12;
		if(a=='D')  return 13;
		if(a=='E')  return 14;
		if(a=='F')  return 15;
		return (int)(a-'0');
	}

转换为目标进制

public static char totarget(int a)
	{
		if(a==15)  return 'F';
		if(a==14)  return 'E';
		if(a==13)  return 'D';
		if(a==12)  return 'C';
		if(a==11)  return 'B';
		if(a==10)  return 'A';
		return (char) (a+'0');
	}

完整代码

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException{
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt(); //需要转换的
		String getchar = scan.nextLine();
		String input = scan.nextLine();
		int m = scan.nextInt(); //转换后的
		char[] str = input.toCharArray();
		
		
		int x=1;
		int sum=0;
		for(int i=str.length-1;i>=0;i--)
		{
			sum+=todecimal(str[i])*x;
			x*=n;
		}
		System.out.println(sum); //十进制
		
		String ans="";
		while(sum!=0)
		{
			ans=totarget(sum%m)+ans;
			sum/=m;
		}
		System.out.println(ans);  //目标进制
	}
	
	
	public static int todecimal(char a)
	{
		if(a=='A')  return 10;
		if(a=='B')  return 11;
		if(a=='C')  return 12;
		if(a=='D')  return 13;
		if(a=='E')  return 14;
		if(a=='F')  return 15;
		return (int)(a-'0');
	}
	
	public static char totarget(int a)
	{
		if(a==15)  return 'F';
		if(a==14)  return 'E';
		if(a==13)  return 'D';
		if(a==12)  return 'C';
		if(a==11)  return 'B';
		if(a==10)  return 'A';
		return (char) (a+'0');
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值