头文件
#include <ctype.h> // for toupperBCD 转 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)]; } }