zoukankan      html  css  js  c++  java
  • 一种BCD码转换的算法

     1 #include "stdio.h"
     2 
     3 typedef unsigned char            uint8_t;
     4 typedef unsigned short            uint16_t;
     5 typedef unsigned int            uint32_t;
     6 typedef unsigned long long        uint64_t;
     7 
     8 /**
     9 ***************************************************************************************************
    10 * @Brief     Decimal convert BCD code        
    11 * @Param     _Dec    Decimal    (Max: 2^64)    
    12 *            _Buf    BCD code buffer
    13 *            _Num    Decimal digit
    14 * @RetVal    None
    15 * @Note      None
    16 ***************************************************************************************************
    17 */
    18 void Dec_to_BCD(uint64_t _Dec, uint8_t* _Buf, uint8_t _Num)
    19 {
    20     uint8_t i, n;
    21     uint8_t flag = 1;    /* BCD码高低字节存放控制标志 */ 
    22     
    23     /* 内部计算 _Dec 的位数,可省去形参 _Num */
    24     #if    0 
    25     uint8_t _Num;
    26     uint64_t temp = _Dec;
    27     do
    28     {
    29         _Num++;
    30         temp /= 10;
    31     }while(temp);
    32     #endif
    33     
    34     for(i = 0; i < _Num; i++)
    35     {
    36         if(flag)    /* 低字节 */ 
    37         {
    38             _Buf[i/2] = (_Dec % 10) & 0x0F;
    39             flag = 0;
    40         }
    41         else        /* 高字节 */ 
    42         {
    43             _Buf[i/2] |= ((_Dec % 10) & 0x0F) << 4;;
    44             flag = 1;
    45         }
    46         _Dec /= 10;
    47     }
    48 }
    49 
    50 
    51 
    52 
    53 
    54 
    55 int main(void)
    56 {
    57     uint8_t i;
    58     uint8_t buf[5] ={0};
    59     
    60     
    61     printf("This is example!
    ");
    62     
    63     Dec_to_BCD(1234567890, buf, 10);
    64     
    65     for(i = 0; i < 5; i++)
    66     {
    67         printf("%#X
    ", buf[i]);
    68     }
    69     
    70     
    71     return 0;
    72 } 
  • 相关阅读:
    Linux系统启动流程
    linux系统目录介绍
    Nginx 安装配置教程
    深入理解linux系统的目录结构
    Mac 下安装Ruby环境(转)
    Android逆向之旅---SO(ELF)文件格式详解(转)
    TAG-9F10 发卡行相关数据(转)
    公钥,私钥,数字证书,签名,加密,认证,的概念区分(转)
    PBOC~PPT-补充内容B(转)
    PBOC~PPT-补充A(转)
  • 原文地址:https://www.cnblogs.com/skullboyer/p/8136902.html
Copyright © 2011-2022 走看看