#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);
}
将16位无符号整数转化为BCD码存放在数组中
最新推荐文章于 2024-05-07 13:00:00 发布