将uint8_t转换为ASCII值:
void uint8_to_ascii(uint8_t data, uint8_t *ascii1, uint8_t *ascii2) {
uint8_t high_nibble = (data >> 4) & 0x0F; // 获取高四位
uint8_t low_nibble = data & 0x0F; // 获取低四位
// 将高四位和低四位转换为对应的 ASCII 字符
*ascii1 = (high_nibble <= 9) ? ('0' + high_nibble) : ('A' + (high_nibble - 10));
*ascii2 = (low_nibble <= 9) ? ('0' + low_nibble) : ('A' + (low_nibble - 10));
}
将ASCII值转换为uint8_t:
uint8_t ascii_to_uint8(char ascii1, char ascii2) {
uint8_t value1, value2;
// Convert first ASCII character to corresponding value
if (ascii1 >= '0' && ascii1 <= '9') {
value1 = ascii1 - '0'; // '3' ASCII - '0' ASCII = 3
} else if (ascii1 >= 'A' && ascii1 <= 'F') {
value1 = ascii1 - 'A' + 10; // 'F' ASCII - 'A' ASCII + 10 = 15
} else {
printf("Invalid input character '%c'\n", ascii1);
return 0; // Return 0 or handle error as needed
}
// Convert second ASCII character to corresponding value
if (ascii2 >= '0' && ascii2 <= '9') {
value2 = ascii2 - '0'; // '6' ASCII - '0' ASCII = 6
} else if (ascii2 >= 'A' && ascii2 <= 'F') {
value2 = ascii2 - 'A' + 10; // 'F' ASCII - 'A' ASCII + 10 = 15
} else {
printf("Invalid input character '%c'\n", ascii2);
return 0; // Return 0 or handle error as needed
}
// Combine values into a single uint8_t
uint8_t result = (value1 << 4) | value2; // Shift value1 left by 4 bits and OR with value2
return result;
}