java中的bcd转换

1 篇文章 0 订阅

工作中遇到这么个名词: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;
     }
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值