将16位无符号整数转化为BCD码存放在数组中

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:24   2830   0
#include <stdio.h>
#include <stdint.h>
#include <string.h>

uint8_t arry[3];
/**
 * 将16位无符号整数转化为BCD码,
 * 每个BCD码占用半字节,一共占用三个字节。
 */
void uint16_tToBCD(uint8_t * arry, uint16_t num) {
    uint8_t index = 0, tmp;

    memset(arry, 0, sizeof (arry));
    while (num) {
        tmp = num % 10;
        num /= 10;
        if (index & 0x01) { //如果是奇数,则存储在高4位
            arry[index>>1] |= tmp<<4;
        } else {    //否则存储在低四位
            arry[index>>1] |= tmp;
        }
        index++;
    }
}

void myprint(uint8_t * arry) {
    int8_t i;   //有符号
    for (i = 2; i >= 0; i--)
        printf("%hhX", arry[i]);
    putchar('\n');
}

void main() {
    uint16_tToBCD(arry, 56789);
    myprint(arry);
}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP