ANSCII码和BCD码互转】的更多相关文章

bool AtoBCD(unsigned char* Asc,unsigned char* BCD,int len) { int i; unsigned char ch; //高位 unsigned char cl; //低位 unsigned char temp1; unsigned char temp2; unsigned char *Retrun; Retrun = new unsigned char[len/2+1]; memset(Retrun,0,len/2+1); for (i=0…
在分析代码之前,我们先来了解一下,BCD码和二进制到底区别在哪? 学习过计算机原理的和数字电子技术这两门课的都会知道这两个到底是什么含义,也有的同学学过了,考过了,过了一段时间又忘记了,今天,我们通过一个代码案例来说说: 我们先查查百度,了解一下BCD码: BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码.用4位二进制数来表示1位十进制数中的0~9这10个数码.是一种二进制的数字编码形式,用二进制编码的十进制代码.BCD码这种编码形式利用了四个位元来储存一个…
BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码,是用4位二进制数来表示1位十进制数中的0~9这10个数码,用一种使用二进制编码十进制的数字编码形式.BCD码这种编码形式利用四个位元来储存一个十进制的数码,从而使二进制和十进制之间的转换得以更加快捷地进行.相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间.此外,对于其他需要高精确度的计算,BCD编码亦很常用. 由于十进制数共有0.1.2.…….9十个数码,…
在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间的互换. #include <stdio.h> #include <string.h> ///////////////////////////////////////////////////// // //功能:二进制取反 // //输入:const unsigned char *sr…
关于这类算法,以前的文章已经讲过类似的:BCD码转二进制 #include <stdio.h> // HEX转BCD //bcd_data(<0x255,>0) unsigned char BCD2HEX(unsigned int bcd_data) { unsigned char temp; temp=((bcd_data>>8)*100)|((bcd_data>>4)*10)|(bcd_data&0x0f); return temp; } //…
,时基为1秒. 当使用S5TIME时,定义数值的范围为0~999,而且要指明使用的时基.时基指定了时间单位. S5TIME时基及相应的时间范围如下: 时基 BCD码 时间范围 10 ms 00 10 ms - 9 s 990 ms 100 ms 01 100 ms - 1 min 39 s 990 ms 1 s 10 1 s - 16 min 39 s 10 s 11 10 s - 2 hr 46 min 30 s 您可以采用如下两种格式定义时间值:  1) W#16#wxyz 2) S5T#a…
最近在Delphi下写软件,需要将数据转换为BCD码和将BCD码转换为其它数据类型,从网上搜索了一下,没有发现好的函数,于是就想自定义函数来完成BCD与其它格式的数据转换功能.但最终没有动手写,先查查Delphi的帮助吧.结果一查才发现Delphi还真的直接支持BCD码的数据.现将Delphi对BCD码的支持资料大致介绍一番: 首先,Delphi支持的BCD码的数据类型名为TBCD,它的定义如下: type   TBcd  = packed record    Precision: Byte; …
这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个位.但是FPGA做除法非常耗资源.有没有其它解决办法?因为用verilog写程序时虽然形式上可以写为比如256,但是实际存储对应的还是0100H,且一个数码管只能显示一个十进制数.因此这个问题相当于二进制如何转换为一个BCD(Binary Code Decimal)码数. 本文只考虑最常见的8421…
本文设计方式采用明德扬至简设计法.利用FPGA来完成显示功能不是个很理想的方式,当显示任务比较复杂,要通过各种算法显示波形或者特定图形时,当然要用单片机通过C语言完成这类流程控制复杂,又对时序要求不高的任务(这也坚定了我学习SOPC的决心).但要驱动如LCD1602/LCD12864打印字符,显示系统工作状态还是比较方便的. 数字系统内部均为二进制比特信息,而打印字符需要先将其转换成BCD码,并进一步转为ASCII字符才能正常显示.这一简单算法的软件实现非常简单,但要是用硬件逻辑完成其中多个乘除…
#include <stdio.h> #include <stdlib.h> #define uchar unsigned char uchar BCD_Decimal(uchar bcd) ; int main(void) { uchar ch = 0x20 ; uchar dec = BCD_Decimal(ch) ; printf("dec = %d\n",dec); while(1){ ; } return 0 ; } //BCD码转十进制函数,输入BC…