package 进制转换;
import javax.swing.JTextField;
public class opertion {
/**
* 总进制转换
* @param typefrom_jt 从进制
* @param typeto_jt 到进制
* @param txtfrom_jt 转换的文本
* @return 转换后的结果
*/
public String aoto(JTextField typefrom_jt, JTextField typeto_jt, JTextField txtfrom_jt) {
String typefrom=typefrom_jt.getText(),
typeto=typeto_jt.getText(),
txtfrom=txtfrom_jt.getText();
if(!typefrom.equals("str") && !typeto.equals("str")){
return from10(typeto,to10(typefrom,txtfrom));
}else if(!typeto.equals("str")){
return String_from_int(txtfrom, typeto);
}else if(!typefrom.equals("str")){
return int_from_String(txtfrom,typefrom);
}
return txtfrom;
}
/**
* 转10进制
* @param from 从进制
* @param txt 要转换的数
* @return 转换后结果
*/
private int to10(String from1, String txt) {
int from=Integer.parseInt(from1);
int sum = 0;
int i = txt.length() - 1;
int leng = i;
while (i >= 0) {
// 判断输入文本的当前取出的char值是数字,并且值不为0
if (Character.isDigit(txt.charAt(i))) {
if (txt.charAt(i) != '0') {
int temp = Integer.parseInt(String.valueOf(txt.charAt(i)));
for (int j = 0; j < leng - i; j++) {
temp *= from;
}
sum += temp;
}
} else {
int temp = 0;
switch (txt.charAt(i)) {
case 'A':
temp = 10;
break;
case 'B':
temp = 11;
break;
case 'C':
temp = 12;
break;
case 'D':
temp = 13;
break;
case 'E':
temp = 14;
break;
case 'F':
temp = 15;
break;
default:
return 0;
}
for (int j = 0; j < leng - i; j++) {
temp *= from;
}
sum += temp;
}
i--;
}
return sum;
}
/**
* 从10进制转为其他进制
* @param to 要转换后的进制
* @param num 要转的10进制数
* @return 转换后的值(String)
*/
private String from10(String to1, int num){
int to=Integer.parseInt(to1);
String jg="";
while(num!=0){
switch (num%to) {
case 10:
jg="A"+jg;
break;
case 11:
jg="B"+jg;
break;
case 12:
jg="C"+jg;
break;
case 13:
jg="D"+jg;
break;
case 14:
jg="E"+jg;
break;
case 15:
jg="F"+jg;
break;
default:
jg=String.valueOf(num%to)+jg;
break;
}
num=num/to;
}
return jg;
}
/**
* 从字符串转为其他进制
* @param txtfrom 要转的字符串
* @param typeto 要转成的其他进制
* @return 转成后的结果
*/
public String String_from_int(String txtfrom, String typeto){
/** 结果 */
String num="";
for(int i=0;i<txtfrom.length();i++){
if(num.equals("")){
num=from10(typeto, txtfrom.charAt(i));
}else{
num+=" "+from10(typeto, txtfrom.charAt(i));
}
}
return num;
}
public String int_from_String(String txtfrom, String typefrom){
String str[]=txtfrom.split(" ");
String num="";
for(int i=0;i<str.length;i++){
num+=String.valueOf((char)to10(typefrom, str[i]));
}
return num;
}
}
- 1
- 2
前往页