`
mimang2007110
  • 浏览: 237909 次
  • 性别: 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编码通常涉及将十进制数转换为二进制数组,或将二进制数组解码回十进制数。示例代码没有包含直接处理BCD编码的函数,但你可以创建一个方法,将字节转换为BCD编码或从BCD编码还原。 4. **对象序列...

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

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

    日期时间转换成ASC码或者BCD码

    ASC码(ASCII码)和BCD码(二进制编码的十进制数)是两种常见的编码方式,用于将日期和时间转换为数字格式,便于计算机处理。下面将详细介绍这两种编码方式以及它们在日期时间转换中的应用。 首先,ASCII码...

    BCD.rar_16进制_16进制转BCD_bcd 16进制_visual c_压缩BCD

    在提供的压缩包文件中,`ADC0_TEMP.c`可能是包含转换函数的具体实现,`BCD.c`可能包含了与BCD编码相关的辅助函数,而`www.pudn.com.txt`可能是来源或说明文档。为了详细了解这些代码的工作原理,你需要阅读并分析这...

    bcd.rar_number

    描述中的“change number int BCD”提示我们要讨论的是如何将十进制整数(int)转换为BCD编码的过程。在编程中,这种转换经常用于处理和存储数字,特别是在财务系统、计算器应用或者任何需要精确显示十进制数字的...

    BCD.zip_BCD decimal_binary bcd

    在BCD编码中,有几种常见的实现方式: 1. **直接编码**:最简单的形式,每个十进制位直接用四位二进制表示。 2. **8421编码**:每位十进制数的二进制表示按照8、4、2、1的权重分配。 3. **格雷码BCD**:使用格雷码...

    add_32_bcd.rar_bcd adder_binary to bcd vhdl_java image editor_ra

    在32位十六进制加法器的基础上实现BCD码转换,意味着原始设计可能是一个简单的无溢出的二进制加法器,然后增加了一个额外的步骤来处理和转换结果,确保每个四位二进制组符合BCD编码规则。这可能涉及到检查并纠正超出...

    iso8583实例解析银联报文(java)

    每个字段可能需要不同的解码方式,例如十进制、二进制、BCD编码等。 3. **数据转换**:解析出的二进制数据需要转换成可读的字符串或数值形式,便于进一步处理和展示。 三、实例应用 在提供的"iso8583实例"中,...

    银联iso8583简单解析实例(java)

    ISO8583协议中的一些数据元素需要进行特定的编码或解码,比如十进制转二进制、BCD编码等。在`Iso8583Util.java`中,可能会存在处理这些编码转换的辅助函数。 5. **`Helloworld.java`**: 这个文件可能是展示如何...

    十进制转BCD三种算法

    BCD编码方式将每一位十进制数用四位二进制来表示,方便硬件电路直接处理。本文将探讨三种不同的十进制转BCD算法。 ### 算法1:迭代法 第一种算法采用迭代的方式,通过不断减去特定值来确定BCD每位的数值。在`...

    BCD、格雷码、余3码码相关介绍

    总结这三种编码方式,8421BCD码适用于精确表示十进制数值,格雷码用于减少信号传输中的错误,而余3码则优化了二进制加减运算。了解这些编码技术对于理解和设计数字系统至关重要,它们在现代计算机科学和工程中仍然有...

    JDK中文转utf-8编码

    例如 D:\jdk1.5.0_06\bin&gt;native2ascii.exe -encoding utf8 abc.txt bcd.txt,可以将 abc.txt 文件中的中文字符转换为 utf-8 编码,并将结果保存在 bcd.txt 文件中。 dos 命令是一个重要的命令,可以用来进入特定的...

    500强经典java笔试

    - D: 正确,`static`不能修饰接口中的成员(Java 8之前),但在Java 8及之后版本中,接口可以有静态成员。 #### 题目15 **问题:** 下列描述中正确的是? - A: 按值传递实际上传递的是实际参数的值 - B: 按引用传递...

    数据类型转化的代码java

    在Java编程语言中,数据类型转换是一项基本而重要的功能,尤其在处理不同数据格式时显得尤为重要。本文档提供的代码示例主要展示了如何将ASCII码流转换为BCD(Binary-Coded Decimal)码流以及DEC(Decimal)码流的...

    commons-codec-1.15-bin.rar

    5. **BCD(Binary-Coded Decimal)编码**:在处理金融数据时,BCD编码有时会被用到,因为它能精确地表示十进制数字。Apache Commons Codec库提供了一个BCDCodec类来处理这种编码。 6. **ISDN号码编码**:ISDN号码在...

    最新华为java笔试题

    - **选项**: a.java面向对象语言容许单独的过程与函数存在b.java面向对象语言容许单独的方法存在c.java语言中的方法属于类中的成员(member)d.java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同 ...

    org.apache.commons.codec-1.8

    Apache Commons Codec库是Java开发中的一个实用工具集,主要用于编码和解码各种常见的编码格式。在版本1.8中,这个库提供了多个类和方法,帮助开发者处理字符串、数字和其他形式的数据转换。以下是对`org.apache....

    java笔试和答案

    - Java是由Sun Microsystems公司于1995年推出的一种面向对象的编程语言,它的设计者们在开发过程中受到了C++的影响,并对其进行了改进,去除了C++中的一些复杂性和不安全因素,如指针、多重继承等。 2. **Java编译...

Global site tag (gtag.js) - Google Analytics