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;
}

两者各有优劣:

  1. 宏函数速度更快;
  2. 宏函数资源消耗更少;
  3. 宏函数不支持运算式代入, 会出现错误;
  4. 宏函数占用的代码量更大, 如果调用的地方很多, 会导致比使用函数应用大小较大;

参考文章

  1. 啥是 BCD 码?

BCD码与十六进制值转换相关推荐

  1. 简述二进制码、十进制码、BCD码、十六进制码转换的算法

    进制转换 简述二进制码.十进制码.BCD码.十六进制码转换的算法 把四字节 BCD 码 5287 转换为十六进制码 14A7H 简述二进制码.十进制码.BCD码.十六进制码转换的算法 ①二进制转十进制 ...

  2. 汇编--子程序设计(1)--非压缩bcd码和十进制的转换

    输入四位十六进制数,显示对应的十进制数(还有位对应的值,以T作为结束符). ;PROGRAM GOES HERE;13:34 2023/4/15-------17:38 2023/4/16----17 ...

  3. BCD码和十进制的转换

    BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码.BCD码这种编码形式利用了四个位元 ...

  4. 【C语言】BCD码、十进制互相转换

    目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1 ...

  5. BCD码和十六进制的区别【转】

    举个例子:比如对于一个数:0000 0010 0011 1111 其16进制就是:23F 如果转换为BCD码,因为BCD是没有A~F的,则每一位乘以其位权为: 1x 1(2的0次方)+ 1x 2(2的 ...

  6. BCD码与二进制的转换

    利用的数据结构:每列4bits 百位|十位|个位|二进制高4位|二进制低4位 二进制→BCD码 算法 从低到高依次判断个位.十位.百位这三列的数是否大于等于5,如果是则加3修正 左移整个数据结构1位 ...

  7. php压缩bcd码,BCD码和十六进制,十进制转换

    android studio adb bogon:platform-tools alamps$ echo $HOME /Users/alamps bogon:platform-tools alamps ...

  8. 什么是BCD码?BCD码的用处。怎么把BCD码转换成二进制值?

    含义:用4位二进制数来表示数值中的1位(十进制数中的0~9这10个数字),简称BCD码,即BCD代码 也可以这样理解:就是将十进制的数以8421的形式展开成二进制(14 以8421形式展现成二进制就是 ...

  9. c++ 转bcd码_BCD码、十六进制与十进制互转

    在做嵌入式软件的设计中,经常会遇到十六进制.BCD码与十进制之间的转换,最近做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.笔者通过对BCD码.十六进制 权的理解,轻松的实现了他们 ...

最新文章

  1. flush privileges 什么意思
  2. php 字符串替换函数,php字符串替换函数str-replace速度比preg-replace快
  3. Strut2判断是否是AJAX调用
  4. 一个服务器上配置多个tomcat
  5. uvalive5096(积分题)
  6. boost::synchronized_value相关的测试程序
  7. “牛津第一,16岁上大学”,中国美女学霸被骂学术媛?学术人“光鲜亮丽”就是错?...
  8. Git 分支管理 Feature分支 强行删除分支
  9. 一步步实现SDDC-vRNI加速实现安全微分段
  10. AIR ANE(本机扩展)使用中的一些问题(Android平台)
  11. 解决:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“
  12. 计算机更改虚拟内存有用吗,电脑虚拟内存有什么用(小白必知虚拟内存作用及设置技巧)...
  13. fastadmin中ajax传参
  14. vos系统是什么?vos网络电话系统怎样搭建?
  15. 操作系统的分段与逻辑地址和转换物理地址
  16. linux rescue 硬盘,linux rescue
  17. eclipse各(旧)版本,32位/64位下载官网地址
  18. idea使用常用基础设置
  19. 将一组数组尽可能均匀的分成两堆,使两个堆中的数的和尽可能相等
  20. LeetCode 912. 排序数组【模板题】

热门文章

  1. c语言调用oracle存储过程,Oracle存储过程
  2. 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
  3. SAP 响应时间 性能察看
  4. 软件工程--面向对象的分析和设计方法
  5. 单元测试框架NUnit 之 constraints 约束
  6. php configure 报错 error: xml2-config not found. Please check your libxml2 installation
  7. 元宇宙十大技术及其产业
  8. 华为云服务权限在哪_华为云资源IAM精细控制权限实践
  9. Git push 常见用法
  10. 台大李宏毅课程笔记3——New Optimization for Deep Learning深度学习新优化