java 十进制数(支持负数)转n进制(n在[2,36]之间)

时间:2014-10-03 11:05:24   收藏:0   阅读:289
public class DecimalTONBigit {

	/**
	 * 十进制数(可以为负数)转n(n在[2,36]之间)进制
	 * @author wl
	 */
	public static final int N=36;//N表示n进制
	public static void main(String[] args) {
		int data=71;//data表示要转换的数
		toNBigit(data,N);
	}
	
	private static void toNBigit(int data, int a) {
		if(a>36||a<2){
			System.out.println("不支持此进制!!!");
			return;
		}
		if(data<0){
			data=((-1*data)^((1<<31)-1))+1;//将负数变为正数,再取反(^((1<<31)-1)即为取反),最后再加1;
		}
		int n=(data%a);
		int m=(data/a);
		
		if(m==0){
			printNBigitNum(n);
		}else{
			toNBigit(m,a);
			
			printNBigitNum(n);
		}
	}
	
	private static void printNBigitNum(int n) {
		if(n>9&&n<=36){
			System.out.print((char)((n-10)+65));
		}else if(n>36){
			System.out.println("不支持此进制!!!");
			return;
		}else{
			System.out.print(n);
		}
	}
}

输出:

1Z

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!