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;
}
}
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
运行结果分析
输入要转化的数字: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