頭文件
#include <ctype.h> // for toupper
BCD 轉 ASCII
void WhAsciiToBcd(unsigned char *psDataIn, size_t uiDataInLen, unsigned char *psDataOut)
{
unsigned char ucTemp = 0;
for (size_t i = 0; i < uiDataInLen; i += 2) {
ucTemp = psDataIn[i];
if (ucTemp > '9') {
ucTemp = (unsigned char)toupper((unsigned char)ucTemp) - 'A' + 0x0A;
} else {
ucTemp &= 0x0F;
}
psDataOut[i / 2] = ucTemp << 4;
ucTemp = psDataIn[i+1];
if (ucTemp > '9') {
ucTemp = (unsigned char)toupper((unsigned char)ucTemp) - 'A' + 0x0A;
} else {
ucTemp &= 0x0F;
}
psDataOut[i/2] |= ucTemp;
}
}
ASCII 轉 BCD
void WhBcdToAscii(unsigned char *psDataIn, size_t uiDataInLen, unsigned char *psDataOut)
{
unsigned char sAscii[] = "0123456789ABCDEF";
for (size_t i = 0; i < uiDataInLen; i++) {
psDataOut[2 * i] = sAscii[(psDataIn[i] >> 4)];
psDataOut[2 * i + 1] = sAscii[(psDataIn[i] & 0x0F)];
}
}