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;i<len/2;i++)
{
temp1 = Asc[2*i]; //高位
temp2 = Asc[2*i+1]; //低位
if ((temp1 >= 'A' && temp1 <= 'F') || (temp1 >='a' && temp1 <= 'f'))
{
ch = (((temp1 -7) & 0x0f)<<4) & 0xff;
}
else if(temp1 >= '0' && temp1 <= '9')
{
ch = ((temp1 & 0x0f)<<4) & 0xff;
}
else
{
return false;
}
//*************************************************************************//
if ((temp2 >= 'A' && temp2 <= 'F') || (temp2 >= 'a' && temp2 <= 'f'))
{
cl = ((temp2 -7) & 0x0f) & 0xff;
}
else if(temp2 >= '0' && temp2 <= '9')
{
cl = (temp2 & 0x0f) & 0xff;
}
else
{
return false;
}
Retrun[i] = ch | cl;
}
memcpy(BCD,Retrun,len/2);
delete []Retrun;
return true;
}
unsigned char *BCDtoA( unsigned char * Data, int Len)
{
int i,j;
unsigned char temp1,temp2;
unsigned char ptr[500];
unsigned char *Ptr;
j=0;
for(i=0;i<Len;i++)
{
temp1=Data[i];
temp2=temp1 & 0x0f ;
if ((temp2>=0x00) && (temp2<=0x09))
{
ptr[i*2+1]=temp2+0x30;
}
else
{
if(temp2==10)
ptr[i*2+1]='A';
else if(temp2==11)
ptr[i*2+1]='B';
else if(temp2==12)
ptr[i*2+1]='C';
else if(temp2==13)
ptr[i*2+1]='D';
else if(temp2==14)
ptr[i*2+1]='E';
else if(temp2==15)
ptr[i*2+1]='F';
}
temp1=Data[i];
temp2=temp1>>4 ;
temp2=temp2 & 0x0f ;
if ((temp2>=0x00) && (temp2<=0x09))
{
ptr[i*2]=temp2+0x30;
}
else
{
if(temp2==10)
ptr[i*2]='A';
else if(temp2==11)
ptr[i*2]='B';
else if(temp2==12)
ptr[i*2]='C';
else if(temp2==13)
ptr[i*2]='D';
else if(temp2==14)
ptr[i*2]='E';
else if(temp2==15)
ptr[i*2]='F';
}
}
Ptr = ptr;
return( Ptr );
}
ANSCII码和BCD码互转的更多相关文章
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
在分析代码之前,我们先来了解一下,BCD码和二进制到底区别在哪? 学习过计算机原理的和数字电子技术这两门课的都会知道这两个到底是什么含义,也有的同学学过了,考过了,过了一段时间又忘记了,今天,我们通过 ...
- BCD码
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码,是用4位二进制数来表示1位十进制数中的0~9这10个数码,用一种使用二进制编码十进制的数字编码形式.BCD码这种 ...
- BCD码、十六进制与十进制互转
在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间 ...
- BCD码与16进制互转算法
关于这类算法,以前的文章已经讲过类似的:BCD码转二进制 #include <stdio.h> // HEX转BCD //bcd_data(<0x255,>0) unsigne ...
- S5Time BCD码存储
,时基为1秒. 当使用S5TIME时,定义数值的范围为0~999,而且要指明使用的时基.时基指定了时间单位. S5TIME时基及相应的时间范围如下: 时基 BCD码 时间范围 10 ms 00 10 ...
- Delphi中对BCD码的直接支持 (转)
最近在Delphi下写软件,需要将数据转换为BCD码和将BCD码转换为其它数据类型,从网上搜索了一下,没有发现好的函数,于是就想自定义函数来完成BCD与其它格式的数据转换功能.但最终没有动手写,先查查 ...
- FPGA中将十进制数在数码管中显示(verilog版)--二进制转换为BCD码
这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个 ...
- FPGA加三移位算法:硬件逻辑实现二进制转BCD码
本文设计方式采用明德扬至简设计法.利用FPGA来完成显示功能不是个很理想的方式,当显示任务比较复杂,要通过各种算法显示波形或者特定图形时,当然要用单片机通过C语言完成这类流程控制复杂,又对时序要求不高 ...
- BCD码转十进制C语言实现
#include <stdio.h> #include <stdlib.h> #define uchar unsigned char uchar BCD_Decimal(uch ...
随机推荐
- Kinect 开发 —— 骨骼追踪进阶(上)
Kinect传感器核心只是发射红外线,并探测红外光反射,从而可以计算出视场范围内每一个像素的深度值.从深度数据中最先提取出来的是物体主体和形状,以及每一个像素点的游戏者索引信息.然后用这些形状信息来匹 ...
- vue 遇到的报错
[Vue warn]: Invalid default value for prop "dataParams": Props with type Object/Array must ...
- centos6.5下 python3.6安装、python3.6虚拟环境
https://www.cnblogs.com/paladinzxl/p/6919049.html # python3.6的安装 wget https://www.python.org/ftp/pyt ...
- ActiveMQ学习总结(7)——ActiveMQ使用场景
MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...
- 通过wireshark,以及python代码收发邮件,了解smtp协议,pop协议工作过程
40返回连接server成功 41.43发送ehlo命令查询server支持命令 返回250 44.46请求认证 server响应235认证成功 47.49发送mail命令发送者邮箱 返回250 ...
- 探索Oracle之数据库升级八 12c Downgrade 11gR2
探索Oracle之数据库升级八 12c Downgrade 11gR2 前言: 我们前面已经完毕了11gR2 upgrade to 12c 的升级,整个过程还是比較顺利的,尽管和曾经版本号升级有些不太 ...
- 关于我遇到的“LNK 2019无法解析的外部符号”的链接错误
昨天在调试程序的时候出现了"LNK 2019无法解析的外部符号"的问题(VS2008),依照网上说的方法都没有解决这个问题,最后在项目文件里发现有两个同名的可是不在同一个目录下的c ...
- JavaFx lineChart real-time Monitor
JavaFx lineChart real-time Monitor about memory public class EffectTest extends Application { Stac ...
- Docker 内程序时间设置,很重要
原文:Docker 内程序时间设置,很重要 重要!!!!! 创建容器时候需要修改一个参数,设置tomcat的时区 -e TZ="Asia/Shanghai" -v /etc/loc ...
- sql server try catch
一直不习惯Sql Server 2000提供的错误处理机制----繁琐,别扭...如今,Sql Server 2005提供了对Try...Catch的支持,我们总算可以象写程序一样写SQL语句了:) ...