(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码解得的字符串
分享到:
相关推荐
C# Encoder 与 Decoder的例子,详细注释。 Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C#
C#二维码编码解码器源码
//编码范例: Vec2 v1 = new Vec2(); v1.x = 1.23f; v1.y = 4.56f; string jsonCode = JSON.Encode(v1); Console.WriteLine("jsonCode=" + jsonCode); //jsonCode 为格式化好的JSON字符串: { "x":1.23, "y":4.56 ...
霍夫曼编码欢迎下载简简单单自己比较喜欢经验证可以验证,有什么不足欢迎交流
在csdn下载的qrcode,在vs2010下编译总是有错,于是我重新封装了一下,win7+vs2010下测试通过。生成的二维码图片使用iphone4的识别软件准确无误,放上源代码,大家一起研究一下。
对Http URL编码的示例,各种解码方式Demo
C#哈夫曼树编码/解码程序,以前做的,有点乱。。。
C#开发编码规范C#开发编码规范C#开发编码规范C#开发编码规范
C#H264格式视频解码, 使用FFMPEG解码为H264视频文件,解码后的数据保存为.YUV,可以使用VLC等播放器播放。
用c#实现的条形码二维码编码解码器, 可实现通用的条形码EAN-8、EAN-13编码解码 可实现QRcode二维码的编码解码,支持中文哦。
C#Krc歌词解码源码 C#Krc歌词算法
用C#实现的条形码和二维码编码解码器,.winform项目中添加对zxing项目的引用. 大家都知道现在QR码越来越好看了,可以给里面加入各种图案和图像。QRcode采用里德-所罗门码来进行编码,里德-所罗门码是一种带有容错机制...
MediaElement C#解码(h.264和aac)FLV MP4 源码,可以编译成功并且成功运行。代码结构清晰,容易移植,比如移植到windows phone上。
c#编码规范c#编码规范c#编码规范c#编码规范c#编码规范
C#实现Base64编码与解码 当我们打开邮件文件时.看到的乱码即为Base64 编码. 此处实现邮件解码 及 邮件编码.
c# 2005 PDU短信解码编码 (带例子)
C#开发的Base64编码和解码软件及源码,以后还会继续上传更多的源码,希望能和大家多多交流,共同进步!
pb12为unicode,而PB9为aASNI,用网上查找的资料无法解决读取...用c#封装过dll,用pB封装过dll,但是都无法实现。查询帮助资料是才找到问题所在,把测试的源代码放到网上,供需要着下载。当然速度会变慢,已经在项目上处理
C# 开发编码规范