uint8_t CNGtime[6]={12,34,0,0,0,0};是bcd格式,用c语言转成十进制并相加显示
时间: 2024-10-15 08:25:36 浏览: 21
uint32_t格式转int格式算法
`uint8_t CNGtime[6]={12,34,0,0,0,0};` 这段代码定义了一个无符号8位整型数组 `CNGtime`,它表示的是BCD(二进制编码的十进制数)形式的时间,每个元素代表小时、分钟的每一位。因为BCD中0-9分别对应二进制的00-11,所以12对应二进制的1100,34对应二进制的0011 0100。
将这个BCD时间转换为十进制并相加可以按照以下步骤:
1. 分别获取每位的十进制值:
- 小时部分:`1 * (1 << 4) + 2 * (1 << 3)`(高位是1,低位是2)
- 分钟部分:`(3 * 1) + (4 * 1 << 1)`(注意分钟的第一位0通常被忽略)
2. 相加求总时间:
- 将小时和分钟的十进制值相加
下面是一个简单的C语言函数示例,用于计算并显示结果:
```c
#include <stdio.h>
int bcd_to_decimal(uint8_t bcd) {
return ((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F);
}
void convert_and_add(uint8_t CNGtime[]) {
int hour = bcd_to_decimal(CNGtime[0]);
int minute = bcd_to_decimal(CNGtime[1]);
int total_time = hour + minute;
printf("Total time in decimal: %d\n", total_time);
printf("Total time displayed: %02d:%02d\n", hour, minute); // 添加冒号补零
}
int main() {
convert_and_add(CNGtime);
return 0;
}
```
运行上述代码后,你会看到输出类似于 "Total time in decimal: 46" 和 "Total time displayed: 00:46" 的结果。
阅读全文