java中的bcd转换

来源:互联网 发布:ipad软件商店不动 编辑:程序博客网 时间:2024/06/10 01:05

工作中遇到这么个名词:10进制bcd,16进制bcd。
于是乎各种的百度,查找资料,最终自己总结一下。(这里是常用的 8421)
关于bcd的解释是这样的,0~9(0到9的数字)用4位二进制来表示。原来这种10进制数字用二进制表示的机制就是10进制bcd。
16进制bcd呢,要将16进制的数字转换成10进制数字,再将10进制数字转换成二进制来表示。

例如:

单位10进制数字 ===>二进制0 ===>00001 ===>00012 ===>00103 ===>00114 ===>01005 ===>01016 ===>01107 ===>01118 ===>10009 ===>1001

这里网上也有在线转换工具:http://www.osgeo.cn/app/s3130
又例如:

多位10进制数字 ===>二进制1 ===>000111 ===>0001 0001111 ===>0001 0001 0001
16进制数字 ===>10进制数字 ===>二进制C8 ===>200 ===>0010 0000 0000

封装成方法如下:

/**     * 10进制转bcd     * @param str 10进制数字 String.valueOf(int number);将10进制数字转成字符串传入此参数     * @return bcd码     */     public static String DecimaltoBcd(String str){                 String b_num="";            for (int i = 0; i < str.length(); i++) {                String b = Integer.toBinaryString(Integer.parseInt(str.valueOf(str.charAt(i))));                int b_len=4-b.length();                for(int j=0;j<b_len;j++){                    b="0"+b;                                }                b_num+=b;            }            return b_num;        }     /**      * 16进制转bcd      * 将16进制转成10进制,再将10进制转成bcd      * @param hex 16进制数字String.valueOf(int number);这里忽略16进制的前缀0x,只转后面的数字为字符串类型,将16进制数字转成字符串传入此参数      * @return bcd码      */     public static String HextoBcd(String hex){          int decimal = Integer.parseInt(hex,16);          String bcd = DecimaltoBcd(String.valueOf(decimal));         return bcd;     }
0 0
原创粉丝点击