时间转8421BCD字节码,hex bcd 互转

// hexbcd.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
*/
//#i nclude <reg51.h>


unsigned char bcdData[3];
unsigned int ihexs;
unsigned char disp_buffer[5];


#define unchar unsigned char


//extern void hex_bcd(unsigned int iHex);     // 声明外部函数
void hextobcd(unsigned int hexs,unsigned char j);
//16进制转bcd码
unchar HEXBCD2(unchar bcd_data)    //hex转为bcd子程序
{
    unchar temp;
    temp=(bcd_data/16*10+bcd_data%16);
    return temp;
}
unchar BCD2HEX(unchar hex_data)    //BCD转为HEX子程序
{
    unchar temp;
    temp=(hex_data/10*16+hex_data%10);
    return temp;
}
void main(void){





   
unchar hex_data[7]={20,13,11,22,10,20,30};//0x14 一个两位十进制,刚好可用两个8421BCD(4位)一个字节来表示,相当于压缩一半,从字节量来说
unchar bcd_data;
for(int i=0;i<7;i++)
{
bcd_data=BCD2HEX(hex_data[i]);
printf("%02x ",bcd_data);
}



//printf("%02x\n",bcd_data);


/*
return;
    ihexs = 59999;
//    hex_bcd(ihexs);
    hextobcd(ihexs,5);


for(int i=0;i<5;i++)
printf("disp:%02x\n",disp_buffer[4-i]);
   // while(1);
   */
}
    
/***************************
   hex to bcd 转换程序
***************************/
void hextobcd(unsigned int hexs,unsigned char j) {


unsigned int va;
unsigned char i;
    va = 10000;                             //最大数级万位
    for(i=j-1;i;i--) 
{
        disp_buffer[i] = 0;                 //目标数组清零
        while ((hexs>=va)&&(va>9)) 
{
            hexs -= va;                     //减除数
            disp_buffer[i]++;               //商位加1
        }
        va /= 10;                           //除数除10,指向低一位
    }
    disp_buffer[0]=hexs;                    //最后个位数
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值