bcd参考:http://www.baike.com/wiki/BCD%E7%A0%81
(1)获取日期和时间的BCD码
比如 2013年12月6日21:23:10,转化为BCD码就是131206212310
static public String getTime2() {
SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmss");
return format.format(new Date());
}
(2)把BCD码转化为金额
/***
* 从BCD获取金额,单位是元,"000000011023"-->"110.23";"000000000013"-->"0.13"
* @param bcd
* @return
*/
public static String getMoneyFromBcd(String bcd){
if(StringUtil.isNullOrEmpty(bcd)){
return null;
}
int dotLoc=bcd.length()-2;
String money=bcd.substring(0,dotLoc )+Constants.DOT+bcd.substring(dotLoc);
bcd=money.replaceAll("^[0]+", "");
if(bcd.startsWith(".")){//.23-->0.23
bcd=0+bcd;
}
return bcd;
}
测试:
@Test
public void test_getMoneyFromBcd() {
String hex = "000000000013";
System.out.println(BcdUtil.getMoneyFromBcd(hex));
}
运行结果:0.13
注意:单位是元。
(3)把金额转化为BCD码
/***
* 把金额转化为BCD码,注意:金额的单位是分,不是元.
*
* @param moneyInt
* @return
*/
public static String moneyToBcd(long moneyInt){
String moneyBCDStr=String.valueOf(moneyInt);
while(moneyBCDStr.length()<12){
moneyBCDStr=0+moneyBCDStr;
}
return moneyBCDStr;
}
比如把1角2分转化为BCD码:
@Test
// ok
public void test_moneyToBcd() {
long money = 12L;
System.out.println(BcdUtil.moneyToBcd(money));
}
运行结果:
000000000012
注意:测试金额的单位是分,不是元。