`
hcmfys
  • 浏览: 357629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C# BCD编码解码

    博客分类:
  • c#
阅读更多
(1)BCD码(二到十进制编码)
人们通常习惯使用十进制数,而计算机内部多采用二进制表示和处理数值数据,
因此在计算机输入和输出数据时,就要进行由十进制到二进制的转换处理。

把十进制数的每一位分别写成二进制形式的编码,称为二进制编码的十进制数,
即二到十进制编码或BCD(Binary Coded Decimal)编码。

BCD码编码方法很多,通常采用8421编码,这种编码方法最自然简单。
其方法使用四位二进制数表示一位十进制数,从左到右每一位对应的权分别是
23、22、21、20,即8、4、2、1。例如十进制数1975的8421码可以这样得出

1975(D)=0001 1001 0111 0101(BCD)

用四位二进制表示一位十进制会多出6种状态,这些多余状态码称为BCD码中的非法码。
BCD码与二进制之间的转换不是直接进行的,
当需要将BCD码转换成二进制码时,要先将BCD码转换成十进制码,然后再转换成二进制码;
当需要将二进制转换成BCD码时,要先将二进制转换成十进制码,然后再转换成BCD码。

编码过程,将数字69进行BCD编码(注:BCD编码低位在前,后面将不再注释)。

1.       将6,9分别转换成二进制表示:6(00000110)9(00001001),大家可以看到,最大的数字9也只要4个位,在传输过程中白白浪费了4个位;

2.       将69合并为一个字节,分别取6,9二进制编码的低4位,按照低位在前的原则,将9的低四位放前面6的低四位放后面得出新的字节二进制编码是10010110;

3.       完成编码过程,69的BCD编码结果为10010110。

解码过程:将69的BCD码10010110进行解码。

1.       将10010110的高4位与低4位拆分开,得到两个二进制数1001和0110;

2.       分别将1001和0110的前面补充4位0000得到两个8位的二进制数00001001,00000110;

3.       因为编码时低位在前,所以我们将两个二进制数编排顺序为00000110 000010001;

C#版代码实现:

int x=97; ///要对整数97BCD编码
    byte m=(((byte)7)<<4)+(((byte)9));
    //得到的m即为数字97和BCD码字节表现形式

    string bs="";
    bs=(((byte)(m<<4))>>4)).ToString()+"+"+(m>>4).ToString();

bs即为从BCD码解得的字符串
分享到:
评论

相关推荐

    磅房bcd编码pb12.5解码程序

    pb12为unicode,而PB9为aASNI,用网上查找的资料无法解决读取...用c#封装过dll,用pB封装过dll,但是都无法实现。查询帮助资料是才找到问题所在,把测试的源代码放到网上,供需要着下载。当然速度会变慢,已经在项目上处理

    c# 二维码 生成和解析

    在C#中生成和解析二维码是一项常见的任务,特别是在开发移动应用、网站或系统集成时。二维码作为一种高效的信息编码方式,可以存储网址、文本、联系信息等,并且易于通过手机扫描读取。本教程将深入探讨如何在C#环境...

    C# 写的CDT 规约解析 并打包发送程序

    3. **数据编码和解码**:在解析和打包过程中,可能需要对数据进行特定的编码和解码操作,例如BCD(Binary-Coded Decimal)编码或十六进制转换。 4. **错误检测和校验**:CDT规约通常会包含校验和或其他错误检测机制...

    tools数据处理工具

    工具中的"bcd编码转换"功能,主要针对BCD编码,这种编码常用于存储和传输数字,特别是在嵌入式系统和财务设备中,因为它可以节省空间并简化处理。 其次,十进制转换涉及到将数值从十进制形式转换为其他进制,如二...

    ACIItoBCD.rar

    在这个项目中,开发者可能使用C#或VB.NET等编程语言,通过VS2008提供的工具和库进行ACII与BCD之间的转换操作。 ACII到BCD的转换过程中,需要将每个ACII字符的数值转换成相应的4位二进制形式。由于ACII码的数字字符...

    DLT645-2007源码.zip

    DLT645-2007协议支持多种数据类型,如BCD编码的数值、时间戳等,源码中会有对应的解码函数。同时,协议还规定了错误处理机制,如当接收的数据帧校验错误时,主站需要发送重发请求。 总的来说,通过分析提供的源码,...

    银联 ISO 8583 格式数据包解析帮助工具(源码)

    3. **字段解码器**:针对不同类型的字段,如数字、字符串、BCD编码等,设计相应的解码逻辑。 4. **数据结构**:创建一个类或对象模型来存储解析后的字段,便于进一步操作和展示。 5. **错误处理**:在解析过程中,...

    CDT规约解析并写入文件

    这些数据可能以二进制、BCD(二进制编码十进制)或浮点数等形式存在,需要根据规约进行正确的转换。 5. **分类存储**:根据开关量和模拟量的特性,将其分开存储。例如,可以创建两个不同的文件,一个用于开关量,一...

    串行二进制转十进制方案(通讯)1

    “满五加三”算法是一种用于二进制到十进制转换的经典方法,特别是在BCD(二进制编码的十进制)码的处理中。当二进制数的各位累加达到或超过5时,根据算法需要加上3,以确保最终结果符合十进制规则。这个过程可以...

    ICS复习(2019)1

    1. 信息编码的两大要素是编码规则和解码规则。为了在计算机内部处理,现实世界的媒体信息需转化为数字信号,即数字化编码过程。 2. 数值数据包括整数和实数,非数值数据包括字符、图像和声音等。 3. 数值数据表示...

Global site tag (gtag.js) - Google Analytics