📄 carryconvert.java
字号:
/**
* @author lztly 李振滔 Whuhan University Of Science and Technology
* @作者 lztly 李振滔 武汉科技大学 计算机科学与技术2004级
* @description 进行不同进制之间的转换
*/
/**
* 导入BigDecimal类
*/
import java.math.BigDecimal;
public class CarryConvert{
/**
* 功能:其它进制(oldcarry)转换到十进制
* @param num(要转换的数) BigDecimal型
* @param oldcarry(num在转换前的进制)
* @return
*/
public static BigDecimal todec(BigDecimal bdnum,int oldcarry)
{
String num=bdnum.toString();
String hexnum="0123456789abcdef";
num=num.toLowerCase();
if (oldcarry==10 ||num.equals("0")) return new BigDecimal(num);
boolean neg=(num.charAt(0)=='-');
if (neg) num=num.substring(1);
double newnum=0;
for (int index=1;index<=num.length();index++)
newnum=newnum*oldcarry+hexnum.indexOf(num.charAt(index-1));
if (neg)
newnum=-newnum;
BigDecimal bd=new BigDecimal(newnum);
return bd;
}
/**
* 功能:其它进制(oldcarry)转换到十进制
* @param num(要转换的数) String型
* @param oldcarry(num在转换前的进制)
* @return
*/
public static BigDecimal todec(String num,int oldcarry)
{
String hexnum="0123456789abcdef";
num=num.toLowerCase();
num=num.replace(",","");
if (oldcarry==10 ||num.equals("0")) return new BigDecimal(num);
boolean neg=(num.charAt(0)=='-');
if (neg) num=num.substring(1);
double newnum=0;
for (int index=1;index<=num.length();index++)
newnum=newnum*oldcarry+hexnum.indexOf(num.charAt(index-1));
if (neg)
newnum=-newnum;
BigDecimal bd=new BigDecimal(newnum);
return bd;
}
/**
* 功能:十进制转换到其他进制(newcarry)
* @param num(要转换的十进制数) BigDecimal型
* @param newcarry(该十进制数要转换到的新进制)
* @return
*/
public static String decto(BigDecimal bdnum,int newcarry)
{
double num=bdnum.doubleValue();
String hexnum="0123456789abcdef";
boolean neg=(num<0);
if (newcarry==10 || num==0) return num+"";
num=Math.abs(num);
String newnum="";
while (num!=0)
{
newnum=hexnum.charAt((int)(num%newcarry))+newnum;
num=Math.floor(num/newcarry);
}
if (neg)
newnum="-"+newnum;
return newnum.toUpperCase();
}
/**
* 功能:十进制转换到其他进制(newcarry)
* @param bdnum(要转换的十进制数) String 型
* @param newcarry(该十进制数要转换到的新进制)
* @return
*/
public static String decto(String bdnum,int newcarry)
{
double num=Double.parseDouble(bdnum);
String hexnum="0123456789abcdef";
boolean neg=(num<0);
if (newcarry==10 || num==0) return num+"";
num=Math.abs(num);
String newnum="";
while (num!=0)
{
newnum=hexnum.charAt((int)(num%newcarry))+newnum;
num=Math.floor(num/newcarry);
}
if (neg)
newnum="-"+newnum;
return newnum.toUpperCase();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -