BCD ASCII 相互转换

xiaoxiao2021-02-28  115

头文件

#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)]; } }
转载请注明原文地址: https://www.6miu.com/read-45396.html

最新回复(0)