BCD码与十进制数间转换

article/2025/10/26 8:38:40

一、前言:

这几天在项目协议对接的时候有一部分功能是获取系统时间功能与校时功能。小马哥获取到时间后打印了一下 2020-5-26 20:06:32,一看时间是对的,然后美滋滋的组装协议发送平台测试了。测试的时候发现月、日、时分秒数据都正常,就是2020年显示的是一个三万多的一个数,此事必有蹊跷。

能打印出正确时间但是平台显示的是错误数据只有两个原因。一个是获取到时间后协议封装有问题,另一个是平台解析有问题。出现问题肯定是要先查自己部分看看是不是自己埋了个bug了。

查了几分钟发现是小马哥开始看协议的时候粗心了,数据类型是BCD码(当初看到BCD的时候还想了一下BCD码是个什么东西,后面忘了。。。)。之前就大学的时候接触过BCD码,好久不用已经忘了BCD码的概念,然后就上网查了一些资料,将时间进行转换,平台可以正确读取时间数据了
在这里插入图片描述

BCD码概念

BCD码(Binary-Coded Decimal‎)称为二进码十进数或二——十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。BCD码可分为有权码和无权码两类:有权BCD码有8421码、2421码、5421码,其中8421码是最常用的BCD码。无权BCD码有余3码,余3循环码等。

1. 8421码

8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。如十进制数8的BCD码是1000。

2. 5421码

5421 BCD码是有权BCD码,从高位到低位的权值分别为5、4、2、1。

3. 2421码

2421 BCD码为有权BCD码,从高位到低位的权值分别为2、4、2、1。

4. 余3码

余3码是8421 BCD码的每个码组加3(0011)形成的。常用于BCD码的运算电路中。

三、BCD 码应用场合

BCD码目前最常使用的应该是时钟芯片中,从时钟芯片中获取的时间数据即是BCD码格式,需要程序员将其转换为十进制数据。其他应用场合还包括,PLC控制输入、拨码开关输入、数码管控制等。

四、.BCD 码与十进制间转换

下面是8421码与是十进制间的相互转换代码,亲测可用:

1. 8421码转十进制数

如,从时钟芯片中读出的时间数据,需转换为十进制数。

unsigned char bcd_to_hex(unsigned char data)
{unsigned char temp;temp = ((data>>4)*10 + (data&0x0f));return temp;
}

2. 十进制数转8421码

如,往时钟芯片写入数据时,需将待写的十进制数转换为8421码。

unsigned char hex_to_bcd(unsigned char data)
{unsigned char temp;temp = (((data/10)<<4) + (data%10));return temp;
}

相关BCD码资料链接:https://blog.csdn.net/zhouzx9293/article/details/82182599


http://chatgpt.dhexx.cn/article/4jNsMjQ1.shtml

相关文章

黑马Python笔记3

输入时&#xff0c;占位符在引号里面&#xff0c;而要接受的变量在引号外面eg:"…%d"%player) expected an indented block&#xff1a;缩进错误。if对缩进有要求&#xff0c;python对缩进要求严格 if表判断 双等号一定要记住&#xff01;&#xff01;&#xff01; i…

2021-03-30 黑马Python学习笔记

操作系统OS&#xff08;Operation System&#xff09; 操作系统作用 1、直接操作硬件 2、把操作硬件的代码封装成系统调用&#xff0c;供其他成员间接操作硬件 没有安装操作系统的计算机被称为裸机 如果想在裸机上运行程序&#xff0c;必须用机器语言书写程序 如果计算机上…

黑马python在线培训

过去的2017年这一年&#xff0c;Python 开发者在全球快速增长&#xff0c;国内小伙伴学习 Python 的热情一路高涨。同时&#xff0c;Python 成为大量开发者推荐的入门编程语言和第二编程语言。2017年12月&#xff0c;Python 在 TIOBE 全球编程语言年度排行榜上升至第四&#xf…

黑马python培训安排

在分享资源之前&#xff0c;大家可以先想清楚未来的职业发展方向。毕竟只有找到未来职业发展方向&#xff0c;才更清楚当下重点学习的内容。 根据上图我们基本上一目了然&#xff0c;找到自己未来要发展的方向。在找到之后可以在各个招聘app上了解一下相关岗位的技能要求是什么…

[学习笔记]黑马程序员python教程

文章目录 思维导图Python基础知识图谱面向对象SQL入门和实战Python高阶技巧 第一阶段第九章&#xff1a;Python异常、模块与包1.9.1异常的捕获1.9.1.1 为什么要捕获异常1.9.1.2 捕获常规的异常1.9.1.3 捕获指定的异常1.9.1.4 捕获多个异常1.9.1.5 捕获全部异常1.9.1.6 异常的el…

黑马python6.0培训视频

关于对Python有一些了解的同学&#xff0c;肯定都会说Python语法简洁适合新手&#xff0c;便于阅读等这些方面。实际上是这样的&#xff0c;很多国内计算机专业都是C语言作为第一门学习的语言&#xff0c;很多国外的却是Python入门。因为Python可以让你在短时间内找到成就感&am…

黑马 Python 数据结构与算法第一章

背景知识 1.数组是一种线性表结构&#xff0c;其用一块连续的内存空间&#xff0c;来存储一组具有相同类型的数据&#xff1b; 2.时间复杂度&#xff0c;也叫做渐进时间复杂度&#xff0c;通常用大O公式书写&#xff0c;表示代码的执行时间随数据规模增长的变化趋势&#xff0c…

黑马程序员 python 数据分析 代码_2020年最新版 5.0程序员 黑马python人工智能数据分析机器学习软件测试全栈开发...

阶段一: 5.0课程资料 收起 第一章: 1-Python基础语法v5.0 第二章: 2-面向对象编程v5.0 第三章: 3-linux命令v5.0 第四章: 4-多任务编程v5.0 第五章: 5-web服务器v5.0 第六章: 6-web前端开发基础v5.0 第七章: 7-MySQL数据库v5.0 第八章: 8-mini-web框架v5.0 第九章: 9-django框架…

黑马python培训视频网盘下载

前几天看到朋友老周发了个朋友圈&#xff0c;我心态立马炸了&#xff1a; 好家伙&#xff01;竟然有钱入手五位数的最新款手机&#xff0c;这也太酸了吧&#xff01; 可他不是整天哭穷么&#xff0c;哪来这么多钱&#xff1f;我的内心充满了疑惑。 趁着昨天他来我家&#xff0c…

上海黑马python培训

过去的2017年这一年&#xff0c;Python 开发者在全球快速增长&#xff0c;国内小伙伴学习 Python 的热情一路高涨。同时&#xff0c;Python 成为大量开发者推荐的入门编程语言和第二编程语言。2017年12月&#xff0c;Python 在 TIOBE 全球编程语言年度排行榜上升至第四&#xf…

黑马Python笔记4

命名的时候宜严格按照要求&#xff0c;不易出现空格宜使用_ 调用函数时&#xff0c;创建新项目的时候选择新窗口&#xff0c;否则出错。 定义函数的格式 def 函数名&#xff08;&#xff09;&#xff1a;函数的命名字母数字下划线 … 调用函数:函数名&#xff08;&#xff09; …

python黑马学习

python的自述 能做什么 1.抢火车票 2.数据分析 3.开发网站 4.开发游戏 发展定位 web全栈开发方向 掌握技术 前端开发 数据库管理 后台框架 职业方向 web全栈开发工程师 数据科学方向 人工智能方向&#xff0c;机器学习 人工智能方向&#xff0c;深度学习 等等…

黑马程序员最新Python教程——第一阶段(1)

黑马程序员最新Python教程——第一阶段&#xff08;1&#xff09; Python导学 第一阶段——第一章01-初识Python02-什么是编程语言03-Python环境安装04-Python环境安装&#xff08;macOS&#xff09;05-Python环境安装&#xff08;Linux&#xff09;06-第一个Python程序-Hello …

黑马 python课程笔记1——值类型、数据类型、字符串

目录 字面量 常用的值类型 字符串 注释 变量 数据类型 数据类型转换 标识符 运算符 字符串的拓展 字符串的三种定义 字符串的拼接 字符串格式化 格式化的精度控制 表达式格式化 字面量 字面量&#xff1a;在代码中&#xff0c;被写下来的固定的值&#xff0c;称之为字面量。 常…

2022黑马Python学习笔记

一、导学 Pthon语言基础入门 Pthon语言高阶加强大数据分析PySpark 二、 初识Python 你好Python程序 print("Hello World!!")>>Hello World!!&#xff01;输入的双引号和括号为英文字符 三、 Python基础语法 &#xff08;一&#xff09; 字面量 1. 定义&a…

Matlab之数据归一化函数——mapminmax()

归一化化就是要把你需要处理的数据经过处理后&#xff08;通过某种算法&#xff09;限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便&#xff0c;其次是保证程序运行时收敛加快。 mapminmax函数 这个函数可以把矩阵的每一行归一到[-1 1]. [y1,PS] mapminmax(x…

mapminmax()、zscore()数据归一化

mapminmax 介绍&#xff1a; mapminmax()函数是Matlab自带的函数&#xff0c;主要用来对数据进行归一化处理。它把所有的数据都转换为[-1,1]之间的数&#xff0c;目的就是取消各维数据间的数量别差别&#xff0c;防止大数吃小数。 矩阵归一化&#xff1a; Ymapminmax(…

数据归一化 normlization.m 及 Z-score(bsxfun)与mapminmax区分

对归一化和标准化有疑惑&#xff0c;整理了Z-score和mapminmax的用法区分&#xff0c;参考链接放在文末。 function data normlization(data, choose) 数据归一化函数可以包含&#xff1a;不归一化&#xff0c;z-score标准化&#xff0c;最大最小归一化 function data nor…

数据归一化mapminmax

#数据归一化 1、为什么要归一化&#xff1f; 把有量纲表达式变为无量纲表达式&#xff0c;数据的标准化是将数据按比例缩放&#xff0c;使之落入一个小的特定区间。归一化主要是为了数据处理方便提出来的&#xff0c;把数据映射到 0 &#xff5e; 1 范围之内处理&#xff0c;更…

2021-05-09 matlab归一化和反归一化函数——mapminmax

matlab归一化和反归一化函数——mapminmax 在做BP神经网络的时候经常会遇到数据的归一化&#xff0c;这个时候需要用到mapminmax函数&#xff0c;老版本可以用premnmx和tramnmx 用函数mapminmax1 默认的map范围是[-1, 1]&#xff0c;所以如果需要[0, 1]&#xff0c;则按这样的…