16进制转BCD码

   BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

代码实现:

#include <stdio.h>
#include <stdlib.h>
 
typedef unsigned char uint8;
typedef unsigned int  uint32;
typedef unsigned short WORD;

typedef struct _SYSTEMTIME {
    WORD wYear;
    WORD wMonth;
    WORD wDayOfWeek;
    WORD wDay;
    WORD wHour;
    WORD wMinute;
    WORD wSecond;
    WORD wMilliseconds;
} SYSTEMTIME;

uint8 HEX2BCD(unsinged char hex_data)
{
	uint8 bcd_data;
	uint8 temp;

	if (hex_data <= 99)
	{
		temp = hex_data % 10;
		bcd_data = hex_data / 10 << 4;
		bcd_data = bcd_data | temp;
	}
	else
	{
		bcd_data = 0xFF;
	}
	return bcd_data;
}

int main() {

    SYSTEMTIME gCurrTime;
    gCurrTime.wYear = 2024;
    gCurrTime.wMonth = 12;
    gCurrTime.wDay = 4;
    gCurrTime.wHour = 9;
    gCurrTime.wMinute = 30;
    gCurrTime.wSecond = 59;


     printf("BCD: %x %x %x %x %x %x",HEX2BCD((gCurrTime.wYear)/100 ),HEX2BCD((gCurrTime.wYear)%100),HEX2BCD(gCurrTime.wMonth),HEX2BCD(gCurrTime.wDay) ,HEX2BCD(gCurrTime.wHour) ,HEX2BCD(gCurrTime.wMinute)  );
 
    return 0;
}

实测效果:

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JA888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值