`
mimang2007110
  • 浏览: 232940 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java中BCD编码

阅读更多

Java中实现的BCD编码,供有兴趣的参考,欢迎批评指正

public class BCDCode
{
    /**
     * <编码>
     * <数字字符串编成BCD格式字节数组>
     * @param bcd 数字字符串
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static byte[] str2bcd(String bcd)
    {
        if (Global.isEmpty(bcd))
        {
            return null;
        }
        else
        {
            // 获取字节数组长度
            int size = bcd.length() / 2;
            int remainder = bcd.length() % 2;
            
            // 存储BCD码字节
            byte[] bcdByte = new byte[size + remainder];
            
            // 转BCD码
            for (int i = 0; i < size; i++)
            {
                int low = Integer.parseInt(bcd.substring(2 * i, 2 * i + 1));
                int high = Integer.parseInt(bcd.substring(2 * i + 1, 2 * i + 2));
                bcdByte[i] = (byte)((high << 4) | low);
            }
            
            // 如果存在余数,需要填F
            if (remainder > 0)
            {
                int low = Integer.parseInt(bcd.substring(bcd.length() - 1));
                bcdByte[bcdByte.length - 1] = (byte)((0xf << 4) | low);
            }
            
            // 返回BCD码字节数组
            return bcdByte;
        }
    }
    
    /**
     * <解码>
     * <BCD格式的字节数组解成数字字符串>
     * @param bcd 字节数组
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static String bcd2str(byte[] bcd)
    {
        if (null == bcd || bcd.length == 0)
        {
            return "";
        }
        else
        {
            // 存储转码后的字符串
            StringBuilder sb = new StringBuilder();
            
            // 循环数组解码
            for (int i = 0; i < bcd.length; i++)
            {
                // 转换低字节
                int low = (bcd[i] & 0x0f);
                sb.append(low);
                
                // 转换高字节
                int high = ((bcd[i] & 0xf0) >> 4);
                
                // 如果高字节等于0xf说明是补的字节,直接抛掉
                if (high != 0xf)
                {
                    sb.append(high);
                }
            }
            
            // 返回解码字符串
            return sb.toString();
        }
    }
}

 

分享到:
评论

相关推荐

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    JAVA二进制字节数组字符十六进制BCD编码转换

    java二进制,字节数组,字符,十六进制,BCD编码转换

    /* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */

    808协议的编码解码

    这段时间公司在做808协议的编码与解码,就专门做了一个工具类,方便自己的调用,有byte,Word,DWord,BCD类型的编码解码,还有普通的byte,int,string转换/2进制10进制16进制....等等

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    关于Java的接口描述,下列哪些说法符合《阿里巴巴Java开发手册》:BCD A .在接口类中的方法和属性使用public修饰符。 B .对于Service类,内部的实现类加Impl的后缀与接口区别。例如:ProductServiceImpl实现...

    8583报文解析框架Simple8583.zip

    LLVAR_NUMERIC(变长域,采用BCD编码,前有1字节的长度,长度为域值的长度,而非字节长,如域值为123456,编码后长度为3字节,但是表示域长的字节值为6) 如果用到其它数据类型可以在IsoType中进行...

    航空订票系统java源码-portfolio:文件夹

    java源码 埃因雷·艾 德克萨斯州奥斯汀eindrayaye@gmail.com         概述 我是一个积极进取的人,在软件开发领域拥有成熟的能力。 我是一个以团队为导向的专业人士,具有深刻的创造性思维,加上可以做的态度。 ...

    java版bs公交服务网源码-full-stack:全栈

    BCD编码 浮点数:(ieee754) 解释尾数,指数 你如何比较两个浮点值? 解释在商业编程中使用浮点数的风险 尾端 在计算中,字节序是计算机内存中数字数据字的字节顺序或序列。 Endianness 主要表示为 big-endian (BE) ...

    XTCP:一个便捷的TCP消息包拼装和解析框架

    支持BCD编码格式【时间,int,float,double等】。支持大端和小端两种存储方式,支持设置为局部存储方式和局部存储方式。支持short,int,long读取长度的自定义。支持对实体细分进行排序,避免解

    将十进制数字转换为格雷码

    格雷码(循环碼)是任意两个相邻数的代码只有一位二进制数不同的BCD码,它与奇偶校验码同属可靠性编码。 格雷碼(Gray code)是由貝爾實驗室的Frank Gray在1940年提出,用於在PCM(脈衝編碼調變)方法傳送訊號時防止...

    计算机组成原理实验(logisim上实现,头哥上检测)

    加 SPOC 中的两个测验。 三、自学教材第 8 章(不含 8.5)和第 9 章。教材在下个学期《系统硬件综合训练》 课程继续使用。 四、实现 1.5 新手实验和第二章数字逻辑基础实验,分别完成: 1、选择器、比较器及测试...

    VMS中解协议常用方法备忘(小结)

    1、由ASICC编码的字符串转换为十六进制byte数组 2、将指定字节数组中的一个字节序列解码为一个字符串 3、将二进制字符串转化为byte类型 4、将SIM卡号转化为byte数组 5、将BCD[6]转换为12位数字字符串 6、关于IP...

    text_converter:向您的朋友发送最特殊的文字和神秘的文字(android)

    二进制编码器/解码器(a-&gt; 01100001) 十六进制编码器/解码器 八进制编码器/解码器 反向文本(abc def-&gt; fed cba)编码器/解码器 大写文本(abc-&gt; ABC)编码器/解码器 小写文本(ABC-&gt; abc)编码器/解码器 上下颠倒...

    地大《计算机文化基础》在线作业一-0011.docx

    D:查出已知的病毒,清除部分病毒 答案:D 在微型计算机中,应用最普遍的字符编码是() A:ASCII码 B:BCD码 C:汉字编码 D:补码 答案:A 一个完整的计算机体系包括() A:主机、键盘和显示器 B:计算机与外部设备 C:...

    MyFisher:探索 Snapper 智能卡安全性的 Android 应用程序

    注意:请原谅糟糕的编码 - 特别是在 BinaryTools 类中。 其中一些代码是直接从 Dex2Jar + JD-GUI 剪切和粘贴的,我已经使一些十六进制编码/解码可读但不是全部。 此应用程序部分是从 MySnapper 应用程序逆向设计的。...

    isotypes:自动从code.google.compisotypes导出

    支持的内容类型:ASCII,EBCDIC,UTF-8,BCD(或任何JVM支持的编码) 自动类型转换 支持主要,次要和三次十六进制和二进制位图 支持Track1和Track2数据 自定义类型格式化程序(包括被覆盖的标准字段格式化程序) ...

Global site tag (gtag.js) - Google Analytics