BCD码与十六进制值转换
BCD码中最常用的就是8421型BCD码数值, 仪器为例使用以下方法进行转换:
宏函数
// BCD 码 转 十进制
#define BCD_TO_DECIMAL(x) ((((x) & 0xf0) >> 4) * 10 + ((x) & 0x0f))
// 十进制 转 BCD 码
#define DECIMAL_TO_BCD(x) ((((x) / 10) << 4) + ((x) % 10))
函数
/*** \brief 十六进制转bcd 用于把时间转换成底板的时间格式* * \param[int] hex 输入十六进制* \return unsigned char 输出bcd码*/
unsigned char hex_to_bcd(unsigned char hex)
{unsigned char bcd;bcd=(hex/10*16)+(hex%10);return bcd;
}/*** \brief bcd时间格式转16进制格式 用于把底板的时间转换成16进制* * \param[int] bcd 输入bcd码* \return unsigned char 输出16进制*/
unsigned char bcd_to_hex(unsigned char bcd)
{unsigned char hex;hex = (bcd/16*10)+(bcd % 16);return hex;
}
两者各有优劣:
- 宏函数速度更快;
- 宏函数资源消耗更少;
- 宏函数不支持运算式代入, 会出现错误;
- 宏函数占用的代码量更大, 如果调用的地方很多, 会导致比使用函数应用大小较大;
参考文章
- 啥是 BCD 码?
BCD码与十六进制值转换相关推荐
- 简述二进制码、十进制码、BCD码、十六进制码转换的算法
进制转换 简述二进制码.十进制码.BCD码.十六进制码转换的算法 把四字节 BCD 码 5287 转换为十六进制码 14A7H 简述二进制码.十进制码.BCD码.十六进制码转换的算法 ①二进制转十进制 ...
- 汇编--子程序设计(1)--非压缩bcd码和十进制的转换
输入四位十六进制数,显示对应的十进制数(还有位对应的值,以T作为结束符). ;PROGRAM GOES HERE;13:34 2023/4/15-------17:38 2023/4/16----17 ...
- BCD码和十进制的转换
BCD码(Binary-Coded Decimal),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码.BCD码这种编码形式利用了四个位元 ...
- 【C语言】BCD码、十进制互相转换
目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1 ...
- BCD码和十六进制的区别【转】
举个例子:比如对于一个数:0000 0010 0011 1111 其16进制就是:23F 如果转换为BCD码,因为BCD是没有A~F的,则每一位乘以其位权为: 1x 1(2的0次方)+ 1x 2(2的 ...
- BCD码与二进制的转换
利用的数据结构:每列4bits 百位|十位|个位|二进制高4位|二进制低4位 二进制→BCD码 算法 从低到高依次判断个位.十位.百位这三列的数是否大于等于5,如果是则加3修正 左移整个数据结构1位 ...
- php压缩bcd码,BCD码和十六进制,十进制转换
android studio adb bogon:platform-tools alamps$ echo $HOME /Users/alamps bogon:platform-tools alamps ...
- 什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?
含义:用4位二进制数来表示数值中的1位(十进制数中的0~9这10个数字),简称BCD码,即BCD代码 也可以这样理解:就是将十进制的数以8421的形式展开成二进制(14 以8421形式展现成二进制就是 ...
- c++ 转bcd码_BCD码、十六进制与十进制互转
在做嵌入式软件的设计中,经常会遇到十六进制.BCD码与十进制之间的转换,最近做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.笔者通过对BCD码.十六进制 权的理解,轻松的实现了他们 ...
最新文章
- flush privileges 什么意思
- php 字符串替换函数,php字符串替换函数str-replace速度比preg-replace快
- Strut2判断是否是AJAX调用
- 一个服务器上配置多个tomcat
- uvalive5096(积分题)
- boost::synchronized_value相关的测试程序
- “牛津第一,16岁上大学”,中国美女学霸被骂学术媛?学术人“光鲜亮丽”就是错?...
- Git 分支管理 Feature分支 强行删除分支
- 一步步实现SDDC-vRNI加速实现安全微分段
- AIR ANE(本机扩展)使用中的一些问题(Android平台)
- 解决:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“
- 计算机更改虚拟内存有用吗,电脑虚拟内存有什么用(小白必知虚拟内存作用及设置技巧)...
- fastadmin中ajax传参
- vos系统是什么?vos网络电话系统怎样搭建?
- 操作系统的分段与逻辑地址和转换物理地址
- linux rescue 硬盘,linux rescue
- eclipse各(旧)版本,32位/64位下载官网地址
- idea使用常用基础设置
- 将一组数组尽可能均匀的分成两堆,使两个堆中的数的和尽可能相等
- LeetCode 912. 排序数组【模板题】
热门文章
- c语言调用oracle存储过程,Oracle存储过程
- 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
- SAP 响应时间 性能察看
- 软件工程--面向对象的分析和设计方法
- 单元测试框架NUnit 之 constraints 约束
- php configure 报错 error: xml2-config not found. Please check your libxml2 installation
- 元宇宙十大技术及其产业
- 华为云服务权限在哪_华为云资源IAM精细控制权限实践
- Git push 常见用法
- 台大李宏毅课程笔记3——New Optimization for Deep Learning深度学习新优化