今天看到论坛的一个朋友问压缩BCD码的转换问题,正好下午没有事情,所以自己写了一个Java实现。首先转载一下BCD码的简单介绍。
BCD(Binary Coded Decimal)是用二进制编码表示的十进制数(见表3.3),十进制数采用0~9十个数字,是人们最常用的。在计算机中,同一个数可以用两种BCD格式来表示:①压缩的BCD码 ②非压缩的BCD码
压缩的BCD码:
压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数用一串BCD码来表示。例如,十进制数59表示成压缩的BCD码为0101 1001,十进制数1946表示成压缩的BCD码为0001 1001 0100 0110。
非压缩的BCD码:
非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。例如,十进制数78表示成压缩的BCD码为0000 0111 0000 1000。
从键盘输入数据时,计算机接收的是ASCII码,要将ASCII码表示的数转换成BCD码是很简单的,只要把ASCII码的高4位清零即可。反之,如果要把BCD码转换成ASII码,只要把BCD码"或|"00110000即可。
下面是我写的Java实现:
public static void main(String[] args) {
byte[] bcd = str2cbcd("01234567897658935260");
for (int i = 0; i < bcd.length; i++) {
System.out.println(bcd[i]);
}
System.out.println(cbcd2string(bcd));
}
public static byte[] str2cbcd(String s) {
if (s.length() % 2 != 0) {
s = "0" + s;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; i += 2) {
int high = cs[i] - 48;
int low = cs[i + 1] - 48;
baos.write(high << 4 | low);
}
return baos.toByteArray();
}
public static String cbcd2string(byte[] b) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
int h = ((b[i]&0xff) >> 4) + 48;
sb.append((char) h);
int l = (b[i] & 0x0f) + 48;
sb.append((char) l);
}
return sb.toString();
}
分享到:
相关推荐
JAVA二进制字节数组字符十六进制BCD编码转换
NULL 博文链接:https://wenkaixuan.iteye.com/blog/2102006
使用汇编语言使用宏,实现两个字节压缩BCD数相加,简单编程
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
编码开关资料,旋转编码开关又称小型旋转编码器,是指具有一组有规律且严格时序脉冲的开关电子元器件。按结构可将其分为机械式旋转编码开关和光电式旋转编码开关。所谓机械式旋转编码开关,是指通过信号配合零件的...
汇编程序 显示压缩BCD数汇编程序 显示压缩BCD数汇编程序 显示压缩BCD数
学校的实验报告,在DOS下输入汇编程序,两个压缩的BCD码相减并调整结果为压缩的BCD码,有详细步骤 word格式
16进制转压缩型BCD码的C语言实现
BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点...
AT89C2仿真,LED灯显示压缩BCD码0-99#include #include #define uchar unsigned char #define uint unsigned int sbit P13 = P1^3; uchar KeyCount,DownFlag; uchar count1 = 0x00; uchar count = 0x00; uchar ...
把两个非压缩BCD码组合成一个压缩BCD码
51单片机中常用的多字节二进制码转压缩BCD码的示例代码(含清晰的注释),后3页使用代码编辑器重排版(对齐、美观)。 需要doc版本的可通过邮件zjyzfn@139.com联系。
BCD码减法实现程序,非常完整,采用Verilog HDL语言实现。-BCD subtraction to achieve program code, very complete, using Verilog HDL language.
7段译码管实现BCD编码制的计数器
51单片机中常用的多字节二进制码转压缩BCD码的示例代码(含清晰的注释),后3页使用代码编辑器重排版(对齐、美观)。 需要doc版本的可通过邮件zjyzfn@139.com联系。
通过子程序段间调用实现BCD码转ASCII码,经典汇编实例
mutisim八位二进制转10位8421编码器仿真文件
基于Multisim14绘制的74LS90实现8421以及5421BCD码的仿真
通过本文介绍而制作完成后的BCD发生器可以提供4位BCD编码输出,方便地控制每位BCD输出,可以快速地得到BCD编码而完成测试或输出BCD编码接到集成电路的BCD编码接口,无需频繁跳线。
1 引言BCD码又称二/十进制码,即二进制编码的十进制码,在设计、测试数字电路硬件过程或是...另外,BCD编码有8421码、2421码、余3码等多种形式,本文以常见的8421码为例介绍电路的实现和程序的编写。如果对程序略加修