将十进制数转换成任意进制数

题目:
  将一个十进制数转换成任意进制数。(36进制以内)

思路:

  • 先获取转换后的各个数位的数值
    如将17转换成2进制
      转换后最高位: 17 % 2 = 1
      次高位: 17 / 2 % 2 = 8 % 2 = 0
      次次高位: 17 / 2 / 2 % 2 = 0
            …
      最低位: 17 / 2 /… / 2 = 0 时的模

由此可知,10进制转换成N进制,即为不断对N取模

  • 再对数值进行处理
    若余数大于9,则需用A~Z进行替换表示,将对应的数值的字符存入记录转换结果的字符数组中;如11 —>‘B’ = 66 --> 11-10+‘A’
    若余数小于9,则直接存储其数值对应的字符;
    8—>‘8’ = 56 --> 8+‘0’

实现:

import java.util.Scanner;

public class toHex {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner reader = new Scanner(System.in);
		int num = reader.nextInt();
		int n = reader.nextInt();
		char th[] = toHex(num,n);
		for(int i=0;i<th.length;i++)
		{
			System.out.print(th[i]);
		}

	}
	static char[] toHex(int num,int N)
	{
		char ch[] = new char[20];    //受int字节的限制
		int k = 0;
		while(num>0)
		{
			int t = num % N;
			if(t>9)
			{
				ch[k] = (char)((t-10)+'A');
			}
			else
			{
				ch[k] = (char)(t+'0');
			}
			k++;
			
			num = num/N;			
		}
		char th[] = new char[k];
		k = k-1;

		for(int i=0;i<th.length;i++)
		{
			th[i] = ch[k--];
		}
		return th;
		
	}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值