一次笔试时候遇到的关于十进制转换成十三进制的编程题。
先说说简单的思路吧:
1、十进制数 num 转换为 n进制
num%n结果肯定为n进制数的最后一位
结果存入一个数组中
2、进入一个循环num!=0时候
num=num/n
重复1的操作
将倒数第二位、倒数第三位。。。到最终结果存入数组
3、遍历数组从 count到0
代码如下
package com.cslience.test;
/*
* 作者:cslience
* 功能:十进制转换成任意进制的方法
* 求余数将其存入数组中
*
*/
public class Transformation {
/**
* @param args
*/
public void transform(int num,int n){
//参数num为输入的十进制数,参数n为要转换的进制
int array[]=new int[100];
int location=0;
while(num!=0){//当输入的数不为0时循环执行求余和赋值
int remainder=num%n;
num=num/n;
array[location]=remainder;//将结果加入到数组中去
location++;
}
show(array,location-1);
}
private void show(int[] arr,int n){
for(int i=n;i>=0;i--){
if(arr[i]>9){
System.out.print((char)(arr[i]+55));
}
else
System.out.print(arr[i]+"");
}
}
public static void main(String[] args)
{
// 测试用例
Transformation t=new Transformation();
t.transform(18, 8);
}
}