求解答 ::每一个十六进制数转化为两个需要发送的ASCII码。 函数代码的含义

为什么 cSrc <0x0a; cSrc/16+0x30 ;cSrc%16 +0x37 ????

void CPageSetCoef::Recover_HEXToAssii_Data(unsigned char cSrc, unsigned char &cDst_H, unsigned char &cDst_L)
{
int byLrc = 0;
char pBuf[4]={0}, cRet = 0x00;
int nData = 0;

if(cSrc / 16 < 0x0a)
cDst_H = cSrc/16 +0x30;
else
cDst_H = cSrc/16 +0x37;

if(cSrc % 16 < 0x0a)
cDst_L = cSrc%16 +0x30;
else
cDst_L = cSrc%16 +0x37;

return ; }

cSrc 中的高四位、低四位,分别都是一位16进制数 0~9, A~F。

0~9,变成ASCII码,需要加上0x30;
A~F,变成ASCII码,需要加上0x37。
这是规则。

下面就是按照规则,分别变换高、低四位:

if(cSrc / 16 < 0x0a) cDst_H = cSrc/16 +0x30;
else cDst_H = cSrc/16 +0x37;

if(cSrc % 16 < 0x0a)cDst_L = cSrc%16 +0x30;
else cDst_L = cSrc%16 +0x37;
温馨提示:答案为网友推荐,仅供参考
相似回答