M进制与N进制之间的转换

import java.util.ArrayList;
import java.util.List;

/**
 * M进制与N进制的转换
 * @author Administrator
 *
 */
public class Convert {
	public static int M=8;
	public static int N=10;
	List<String> modeList = new ArrayList<String>();
	String shang;//保存商
	
	private void getMode(String number) {
		shang = "";
		int temp = 0;//保存余数
		while(number.length()>0)
		{
			int n = getInt(number.substring(0, 1));
			number = number.substring(1);
			temp =temp*M+n;
			shang +=getStr(temp/N);
			System.out.println("shang="+shang);
			temp = temp % N;
			System.out.println("temp="+temp);
		}
		while (shang.length() > 0 && shang.charAt(0) == '0') {
			shang = shang.substring(1);
		}
		/*
		 * 将余数加入到arrayList里面
		 *  2| 9-----1
		 *   2| 4----0
		 *    2| 2---0
		 *     2| 1--1
		 *        0
		 */
		modeList.add(getStr(temp));
		//getMode的递归
		while(shang.length()>0){
			getMode(shang);
		}
	}

	
	/**
	 * {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J"};
	 * 一一对应
	 * { 1,  2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 , 18,19 , 20};
	 * 根据字符来获取对应的整数
	 */
	private int getInt(String str) {
		int result;
		if (str.charAt(0) >= '0' && str.charAt(0) <= '9') {
			result = str.charAt(0) - '0';
		} else {
			result = str.charAt(0) - 'A' + 10;
		}
		return result;
	}

	/**
	 * 通过整数来获取对应的字符
	 */
	private String getStr(int number)
	{
		String result;
		if(number>=0&&number<=9) {
			result = String.valueOf((char)('0'+number));
		}
		else if(number>=10&&number<=36){
			result = String.valueOf((char)('A'+number-10));
		}
		else{
			result = "-1";//出错了
		}
		return result;
	}
	public static void main(String [] args)
	{
		String result="";
		Convert c = new Convert();
		c.getMode("256");
		//遍历arrayList  
		for(int i =0;i<c.modeList.size();i++)
		{
			//将arrayList里面的元素按照下标的降序序列组合成一个字符串。
			result = c.modeList.get(i)+result;
		}
		System.out.println("result:"+result);
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值