十进制转化成N进制

 

package  test;

import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;

/**
 * 整数转化成N进制 N<=36
 * 
 * 
@author Administrator
 *
 
*/

public   class  aryTransformation2  {

 
/**
  * 
@param args
  
*/

 
 
public static void main(String[] args) 
  
  BufferedReader br 
= new BufferedReader(new 
       InputStreamReader(System.in));
  
int N=2
  
int Num;
  String result;
  String[] message 
= {"输入要转化的数字:",
    
"输入要转化成进制数N:"}
;
  
  
//输入数据
  String str[] = new String[10];
      
try{
       
for(int i=0; i<2; i++)
       
{    
        System.out.print(message[i]);
        str[i] 
= br.readLine();       
        
if(str[i].equals("q")) break;
       }
 
      }
catch(IOException e){
       e.printStackTrace();
      }

   
  Num 
= Integer.parseInt(str[0]);
   N 
= Integer.parseInt(str[1]);
  
   
//处理
  result = IntToDigit2(Num, N);
  
  
//输出结果
  System.out.println(" 结果是:" + result);
 }

                                                                                                              
 
/**
  * 十进制转化成n进制
  * 
@param num
  * 
@param n
  * 
@return
  
*/

 
private static String IntToDigit2(int num, int n) {
  
     
int k = 0,kkk = 0;
   
int count = 0;
   
int p = 1;
   
   
int[] arr = new int[100]; 
   
int j =0;
   
   
int[] arr2 = new int[100];
   
int f =0;  
   String result 
= "";
   
   k 
= num;
   
while( k != 0 )
   
{
    
    
if( k < n )
    
{
     arr2[f] 
= k;
     arr[j] 
= 1;
     
break;
    }

    
while((k/n) !=0)
    
{
     count
++;
     k 
= k/n;
     
if(k < n)
     
{
      arr2[f
++= k;
      kkk 
= k;
     }
  
    }

    
    arr[j
++= count+1;
    
    
for(int i=0; i<count; i++)
     p
= p*n;
    p 
= kkk*p;
    num 
= num-p;
    k 
= num;
                                                                                                                

                                 
    p
=1;
       count 
= 0;
   }

   
   
int Length = arr[0];
   System.out.println(
" 字串长度..." + Length);
   
int flag = 0;
   
char c;
   
int Number = 0;
   
   
for(int l=Length, d=0; l>0; l--,d++)
   
{
    flag 
= 0;
    
for(int t=0; t<Length; t++)
    
{
     
if(l == arr[t])  
     
{
      flag 
= 1;
     
      
/**
       * 如果arr2[t]大于10则转化成对应的字母10:A,11:B,12...
       
*/

      
if(arr2[t] >= 10)  
      
{
       Number 
= arr2[t] + 55;
       c 
= (char)Number;
       result 
+= c;
       System.out.println(l 
+ "... ..." +c); 
      }

      
else
      
{
       result 
+= arr2[t]; 
       System.out.println(l 
+ "... ..." +arr2[t]);
      }

       
     }

    }

    
    
if(flag == 0)
    
{
     result 
+= "0";
     System.out.println(l 
+ "... ...0");
    }

   }

   
return result;  
 }


}


 

-------------------------
运行结果分析

输入要转化的数字:19
输入要转化成进制数N:2

字串长度...5
5... ...1
4... ...0
3... ...0
2... ...1
1... ...1

结果是:10011

输入要转化的数字:789465
输入要转化成进制数N:23

字串长度...5
5... ...2
4... ...I
3... ...K
2... ...8
1... ...D

结果是:2IK8D


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值