美国留学好吗:谁能帮我看看这段C++的意思?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 11:13:45
int gsmString2bytes(const char*pSrc,unsigned char*pDst, int nSrcLength)
for (int i = 1;i<nSrcLength;i++)
{
//输出高4位
if (*pSrc>='0'&& *pSrc<='9')
{
*pDst = (*pSrc - '0')<<4;
}
else
{
*pDst = (*pSrc - 'A' + 10) << 4;
}pSrc++;
//输出低4位
if (*pSrc>='0'&& *pSrc<='9')
{
*pDst |= *pSrc -‘0';
}
{
*pDst |=*pSrc - 'A' + 10;
}
pSrc++;
pDst++;
}

请主要帮我说明其中的这几个语句是什么意思,谢谢
*pDst = (*pSrc - 'A' + 10) << 4;
*pDst |= *pSrc -‘0';
*pDst |=*pSrc - 'A' + 10;

//输出高4位
*pDst = (*pSrc - '0')<<4; //在字符为 '0'到'9'时,把它转换为相应的数字,然后存到字节的高四位,<<表示左移四位。

比如, '9'-'0' = 9,存入高四位后,字节内容看起来是这样:0900

*pDst = (*pSrc - 'A' + 10) << 4;//与上句相同, 只是转换的是16进制中大于9的字符,如:A,B,C,D,E,F,所以要*pSrc - 'A',但减出来变为了0,1,2,3,4,5,所以又要加10,变为10,11,12,13,14,15,正好是一个字节内容,<<4与上同。 最后左移看起来应是这样:0E00,0A00

//输出低4位的例子你举一反三吧。