`

BCD 转 String, String 转 BCD

    博客分类:
  • Java
 
阅读更多
 /// <summary>
        /// BCD码转为10进制串(阿拉伯数据) 
        /// </summary>
        /// <param name="bytes">BCD码 </param>
        /// <returns>10进制串 </returns>
        public String bcd2Str(byte[] bytes)
        {
            StringBuilder temp = new StringBuilder(bytes.Length * 2);

            for (int i = 0; i < bytes.Length; i++)
            {
                temp.Append((byte)((bytes[i] & 0xf0) >> 4));
                temp.Append((byte)(bytes[i] & 0x0f));
            }
            return temp.ToString().Substring(0, 1).Equals("0") ? temp.ToString().Substring(1) : temp.ToString();
        }
        
        /// <summary>
        /// 10进制串转为BCD码 
        /// </summary>
        /// <param name="asc">10进制串 </param>
        /// <returns>BCD码 </returns>
        public byte[] str2Bcd(String asc)
        {
            int len = asc.Length;
            int mod = len % 2;

            if (mod != 0)
            {
                asc = "0" + asc;
                len = asc.Length;
            }

            byte[] abt = new byte[len];
            if (len >= 2)
            {
                len = len / 2;
            }

            byte[] bbt = new byte[len];
            abt = System.Text.Encoding.ASCII.GetBytes(asc);
            int j, k;

            for (int p = 0; p < asc.Length / 2; p++)
            {
                if ((abt[2 * p] >= '0') && (abt[2 * p] <= '9'))
                {
                    j = abt[2 * p] - '0';
                }
                else if ((abt[2 * p] >= 'a') && (abt[2 * p] <= 'z'))
                {
                    j = abt[2 * p] - 'a' + 0x0a;
                }
                else
                {
                    j = abt[2 * p] - 'A' + 0x0a;
                }

                if ((abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9'))
                {
                    k = abt[2 * p + 1] - '0';
                }
                else if ((abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z'))
                {
                    k = abt[2 * p + 1] - 'a' + 0x0a;
                }
                else
                {
                    k = abt[2 * p + 1] - 'A' + 0x0a;
                }

                int a = (j << 4) + k;
                byte b = (byte)a;
                bbt[p] = b;
            }
            return bbt;
        }

 

分享到:
评论

相关推荐

    Android BCD和String的转换

    1. **BCD码转换为字符串(String)**:在Android应用中,我们可能需要将接收到的BCD码数据解析成易于阅读的字符串。这个工具类应该包含一个方法,接受一个`byte[]`数组作为参数,其中每个字节的高位和低位分别代表一个...

    java工具类 string转10进制sacii byte数组再转16进制字符数组再转16进制byte数组 string与BCD互转

    java工具类 : string转10进制sacii byte数组、 10进制sacii byte数组转16进制字符数组、 16进制字符数组转16进制byte数组、 string与BCD互转等方法,包含多个转换方法, 足够满足日常解包组包需求

    数字字符串转BCD码转字符串C函数

    数字字符串转BCD码,BCD码转字符串C函数,定义好的函数下载即可使用无需更改。

    c++一些基本的处理函数

    bool __stdcall stringtohex(unsigned char *inbuf,int inlen,unsigned char * outbuf); bool __stdcall ishex(BYTE *buf,int bl); bool __stdcall isbcd(BYTE *buf,int bl); bool __stdcall encodebcd(BYTE *buf,...

    bcd码大数计算源码

    根据提供的文件信息,本文将详细解释“bcd码大数计算源码”的核心概念与实现细节。这段代码主要涉及了BCD(Binary-Coded Decimal,二进制编码十进制数)编码的大数运算处理方法,包括加法、减法、乘法和除法。 ### ...

    java中BCD编码

    - `fromHexString(String hex)`:将十六进制字符串解析为BCD编码的字节数组。 在实际开发中,BCD编码常用于金融系统,如银行、支付平台等,处理金额时需要保证精度,避免浮点数计算误差。同时,BCD编码也有利于减少...

    C++如何实现BCD码和ASCII码互转

    // BCD转ASCII for (int i = 0; i (); i++) { cout [i]; } cout ; string str2 = ASCII2BCD(str1); // ASCII转BCD for (int i = 0; i (); i++) { cout [i]; } cout ; return 0; } ``` 四、总结 本文详细...

    MOPDataConvert:一个简单的工具在字节和 BCD 代码之间转换

    a simple tool convert between bytes and BCD code. written in Objective-C for IOS. ##APIS //BCD码转换为十六进制数 +(NSString*)BCDToHEX:(NSData*)data; //从字符串中取字节数组(将HEX转换为BCD) +(NSData*)...

    C++如何实现BCD码和ASCII码的相互转换

    BCD  即BCD代码。Binary-Coded Decimal‎,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二...

    GBK编码转换汉字,汉字转换GBK编码,VC代码实现

    本篇文章将深入探讨如何在VC++环境中,利用MFC(Microsoft Foundation Classes)框架实现GBK编码与汉字之间的转换,以及BCD(Binary Coded Decimal)编码和ASCII编码的转换。 首先,我们来看GBK编码和汉字的转换。...

    java字节流操作帮助文档

    java字节流相关操作,int转换成byte字节数组,String转换为byte字节数组,bcd码转换。

    string 的创建

    ### String 创建的理解与深入解析 #### 一、String 创建的位置:栈 vs 堆 **栈(Stack)** 和 **堆(Heap)** 是 Java 内存管理中的两个重要概念,它们分别负责不同类型的内存分配。 1. **栈内存**: - **特点**...

    西门子SCL语言-速查手册.pdf

    BCD相关的函数允许在二进制和十进制之间转换,如`BCD_TO_INT(x)`,`INT_TO_BCD(x)`,`DWORD_BCD_TO_DINT(x)`等。 5. 特殊数据类型: - `WORD_BCD_TO_INT(x)`:将一个包含BCD码的字转换为整数。 - `INT_TO_BCD_...

    jsstring操作.pdf

    如`"abcdefg".slice(1, 3)`返回`"bcd"`。 `string.split(separator, limit)`方法根据`separator`将字符串分割成数组。`limit`参数限制返回数组的长度。例如,`"a1,b1,c1".split(",")`返回`["a1", "b1", "c1"]`,`"a...

    lua 的string相关方法

    例如,`string.sub("abcd", 2)` 返回 "bcd",`string.sub("abcd", -2)` 返回 "cd",`string.sub("abcd", 2, -2)` 返回 "bc"。 6. `find` 函数:这个函数用于查找字符串中是否存在指定的子串。它返回子串的开始和...

    Delphi 功能扩展源码

    // 十六进制 BCD 转十进制整数 function HexBCDToint(sHexBCD: Byte): integer; // 十进制整数转十六进制 BCD function IntToBCD(Int: Byte): word; // 分钟数转日期时间 function MinuteToTime(Minute: ...

    19-STM32F429_RTC_SETDATETIME_STRING.7z

    它支持多种时间格式,包括BCD(二进制编码的十进制)和普通二进制,可以根据应用需求选择。 RTC的日期和时间设置通常涉及以下步骤: 1. **初始化RTC**:首先,需要配置RTC的预分频器、闰年补偿和时区设置。预分频器...

    Delphi Socket 通信编程要点小结

    Function Str2Bcd(Str: String): String; var i, Bytes: Byte; Odd: boolean; Hex: String; begin Result := ''; Odd := Length(Str) mod 2 = 1; Bytes := (Length(Str) + 1) div 2; if Odd then Str := Str ...

    C#面试习题大全.docx

    (2) 正确答案是 BCD:从数据库读取记录,可以用 ExecuteNonQuery、ExecuteScalar、Fill、ExecuteReader 等方法。 9. private、protected、public、internal 修饰符的访问权限: A_Private:私有访问是允许的最低...

Global site tag (gtag.js) - Google Analytics