?? 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 + -