📄 decimal.java
字号:
private String Decimal_To_Hexadecimal(String De){
return Binary_To_Hexadecimal(Decimal_To_Binary(De));
}
private String Decimal_To_Octal(String De){
return Binary_To_Octal(Decimal_To_Binary(De));
}
private String Decimal_To_Binary(String De){
int k=De.length();//小数点位置
int onlyOne=0;
StringBuffer result=new StringBuffer();
if(De.isEmpty()) return "";
for(int i=0;i<De.length();i++)
if(De.charAt(i)=='.'){
k=i;
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
int integer=0;
double fraction=0;
//将整数部分由String转为int
for(int i=0;i<k;i++)
integer = 10*integer+(De.charAt(i)-48);
//将integer转成2进制
while(integer!=0){
if(integer%2==1) result.insert(0,'1');
else result.insert(0,'0');
integer/=2;
}
if(k!=De.length()) result.append('.');//如果有小数部分,加上小数点
//如果开始处只有小数点,在前面加一个0
if(result.charAt(0)=='.') result.insert(0,'0');
//将小数部分由String转为Double
for(int i=De.length()-1;i>=k+1;i--)
fraction = fraction/10+(De.charAt(i)-48);
fraction/=10;
//将fraction转成2进制
int count=0;
while(count<=8 && Math.abs(fraction)>0.001){
fraction*=2;
if(fraction>=1){
result.append('1');
fraction--;
}
else result.append('0');
count++;
}
return result.toString();
}
private String Hexadecimal_To_Binary(String Hex){
int onlyOne=0;
String result="";
for(int i=0;i<Hex.length();i++)
if(Hex.charAt(i)=='.'){
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
for(int i=0;i<Hex.length();i++){
result+=Hex_To_Bi_Code(Hex.charAt(i));
}
return result;
}
private String Octal_To_Binary(String Octal){
int onlyOne=0;
String result="";
for(int i=0;i<Octal.length();i++)
if(Octal.charAt(i)=='.'){
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
for(int i=0;i<Octal.length();i++){
result+=Oct_To_Bi_Code(Octal.charAt(i));
}
return result;
}
private String Binary_To_Decimal(String Bi){
int k=Bi.length();//记录小数点位置
int onlyOne=0;
double result=0;//记录转换后的十进制数
for(int i=0;i<Bi.length();i++)
if(Bi.charAt(i)=='.'){//查找小数点位置
k=i;
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
for(int i=0;i<k;i++)
result+=Math.pow(2,k-i-1)*(Bi.charAt(i)-48);
if(k<Bi.length()){//说明输入数据含有小数点
for(int i=k+1;i<Bi.length();i++)
result+=Math.pow(2,k-i)*(Bi.charAt(i)-48);
}
//将result转换成字符串格式
return Double.toString(result);
}
private String Binary_To_Octal(String Bi){
StringBuffer std = new StringBuffer(Bi);//标准串
String result="";//返回结果串
int k=-1;
int onlyOne=0;
//将Bi转成标准串
for(int i=0;i<Bi.length();i++)
if(Bi.charAt(i)=='.'){
k=i;//查找小数点位置
//如果找到两个以上小数点,显示出错
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
if(k==-1){//没有小数点
if(Bi.length()%3!=0)//Bi.length()%3==0时高位处不需补零
for(int i=0;i<3-Bi.length()%3;i++)
std.insert(0,'0');//高位处补零
}
else if(k==0){//小数点在首位
for(int i=0;i<3;i++)
std.insert(0,'0');//高位处补3个零
for(int i=0;i<3-(Bi.length()-k-1)%3;i++)
std.append('0');//低位处补零
}
else{
for(int i=0;i<3-k%3;i++)
std.insert(0,'0');//高位处补零
for(int i=0;i<3-(Bi.length()-k-1)%3;i++)
std.append('0');//低位处补零
}
int stdPoint;//记录小数点在std中位置
stdPoint = std.indexOf(".");//查找小数点在std中位置
if(stdPoint==-1) stdPoint=std.length();//没有小数点
for(int i=0;i<stdPoint;i+=3)
result+= Bi_TO_Oct_Code(std.substring(i,i+3));
if(stdPoint!=std.length()){//有小数点
result+=".";
for(int i=stdPoint+1;i<std.length();i+=3)
result+= Bi_TO_Oct_Code(std.substring(i,i+3));
}
return result;
}
private String Binary_To_Hexadecimal(String Bi){
StringBuffer std = new StringBuffer(Bi);//标准串
String result="";//返回结果串
int k=-1;
int onlyOne=0;
//将Bi转成标准串
for(int i=0;i<Bi.length();i++)
if(Bi.charAt(i)=='.'){
k=i;//查找小数点位置
//如果找到两个以上小数点,显示出错
onlyOne++;
if(onlyOne>1) return "小数点太多了!";
}
if(k==-1){//没有小数点
if(Bi.length()%4!=0)//Bi.length()%4==0时高位处不需补零
for(int i=0;i<4-Bi.length()%4;i++)
std.insert(0,'0');//高位处补零
}
else if(k==0){//小数点在首位
for(int i=0;i<4;i++)
std.insert(0,'0');//高位处补4个零
// if((Bi.length()-k-1)%4!=0)//Bi.length()-k-1)%4=0时低位处不需补零
for(int i=0;i<4-(Bi.length()-k-1)%4;i++)
std.append('0');//低位处补零
}
else{
if(k%4!=0)//k%4==0时高位处不需补零
for(int i=0;i<4-k%4;i++)
std.insert(0,'0');//高位处补零
// if((Bi.length()-k-1)%4!=0)//Bi.length()-k-1)%4=0时低位处不需补零
for(int i=0;i<4-(Bi.length()-k-1)%4;i++)
std.append('0');//低位处补零
}
int stdPoint;//记录小数点在std中位置
stdPoint = std.indexOf(".");//查找小数点在std中位置
if(stdPoint==-1) stdPoint=std.length();//没有小数点
for(int i=0;i<stdPoint;i+=4)
result+= Bi_TO_Hex_Code(std.substring(i,i+4));
/**
*subString(startIndex,endIndex)分出的是sdt[startIndex]到std[endIndex-1]
*之间的字符
*/
if(stdPoint!=std.length()){//有小数点
result+=".";
for(int i=stdPoint+1;i<std.length();i+=4)
result+= Bi_TO_Hex_Code(std.substring(i,i+4));
}
return result;
}
private String Bi_TO_Hex_Code(String sub){
String Hex="";//为什么不能用switch呢
//为什么这样写不行呢
/* if(sub=="0000") Hex="0";
else if(sub=="0001") Hex="1";
else if(sub=="0010") Hex="2";
else if(sub=="0011") Hex="3";
else if(sub=="0100") Hex="4";
else if(sub=="0101") Hex="5";
else if(sub=="0110") Hex="6";
else if(sub=="0111") Hex="7";
else if(sub=="1000") Hex="8";
else if(sub=="1001") Hex="9";
else if(sub=="1010") Hex="A";
else if(sub=="1011") Hex="B";
else if(sub=="1100") Hex="C";
else if(sub=="1101") Hex="D";
else if(sub=="1110") Hex="E";
else if(sub=="1111") Hex="F";*/
if(sub.compareTo("0000")==0) Hex="0";
else if(sub.compareTo("0001")==0) Hex="1";
else if(sub.compareTo("0010")==0) Hex="2";
else if(sub.compareTo("0011")==0) Hex="3";
else if(sub.compareTo("0100")==0) Hex="4";
else if(sub.compareTo("0101")==0) Hex="5";
else if(sub.compareTo("0110")==0) Hex="6";
else if(sub.compareTo("0111")==0) Hex="7";
else if(sub.compareTo("1000")==0) Hex="8";
else if(sub.compareTo("1001")==0) Hex="9";
else if(sub.compareTo("1010")==0) Hex="A";
else if(sub.compareTo("1011")==0) Hex="B";
else if(sub.compareTo("1100")==0) Hex="C";
else if(sub.compareTo("1101")==0) Hex="D";
else if(sub.compareTo("1110")==0) Hex="E";
else if(sub.compareTo("1111")==0) Hex="F";
return Hex;
}
private String Bi_TO_Oct_Code(String sub){
String Oct = "";
if(sub.compareTo("000")==0) Oct="0";
else if(sub.compareTo("001")==0) Oct="1";
else if(sub.compareTo("010")==0) Oct="2";
else if(sub.compareTo("011")==0) Oct="3";
else if(sub.compareTo("100")==0) Oct="4";
else if(sub.compareTo("101")==0) Oct="5";
else if(sub.compareTo("110")==0) Oct="6";
else if(sub.compareTo("111")==0) Oct="7";
return Oct;
}
private String Oct_To_Bi_Code(char sub){
String Bi = "";
if(sub=='0') Bi="000";
else if(sub=='1') Bi="001";
else if(sub=='2') Bi="010";
else if(sub=='3') Bi="011";
else if(sub=='4') Bi="100";
else if(sub=='5') Bi="101";
else if(sub=='6') Bi="110";
else if(sub=='7') Bi="111";
else if(sub=='.') Bi=".";
return Bi;
}
private String Hex_To_Bi_Code(char sub){
String Bi = "";
if(sub=='0') Bi="0000";
else if(sub=='1') Bi="0001";
else if(sub=='2') Bi="0010";
else if(sub=='3') Bi="0011";
else if(sub=='4') Bi="0100";
else if(sub=='5') Bi="0101";
else if(sub=='6') Bi="0110";
else if(sub=='7') Bi="0111";
else if(sub=='8') Bi="1000";
else if(sub=='9') Bi="1001";
else if(sub=='a') Bi="1010";
else if(sub=='b') Bi="1011";
else if(sub=='c') Bi="1100";
else if(sub=='d') Bi="1101";
else if(sub=='e') Bi="1110";
else if(sub=='f') Bi="1111";
else if(sub=='.') Bi=".";
return Bi;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -