字节串与字符串相互转换的代码:
inline std::string hexStrTobytes(unsigned char * cHex, int nHexLen)
{
std::string strBytes;
unsigned char pTemp;
for(int i=0; i<nHexLen; i=i+2)
{
if(cHex[i]>='A' && cHex[i]<='F')
{
pTemp = cHex[i]-'A'+10;
}
else if(cHex[i]>='a' && cHex[i]<='f')
{
pTemp = cHex[i]-'a'+10;
}
else if(cHex[i]>='0' && cHex[i]<='9'){
pTemp = cHex[i]-'0';
}
if(cHex[i+1]>='A' && cHex[i+1]<='F')
{
pTemp = (pTemp<<4) | (cHex[i+1]-'A'+10);
}
else if(cHex[i+1]>='a' && cHex[i+1]<='f')
{
pTemp = cHex[i+1]-'a'+10;
}
else if(cHex[i+1]>='0' && cHex[i+1]<='9'){
pTemp = (pTemp<<4) | (cHex[i+1]-'0');
}
strBytes.push_back(pTemp);
}
return strBytes;
}
inline std::string bytesTohexStr(unsigned char * cBytes, int nBytesLen)
{
std::string strHex;
int nTemp;
char cTemp;
for(int i=0; i<nBytesLen; i++)
{
//high 4bits
nTemp = (cBytes[i]>>4) & 0x0F;
if(nTemp >=0 && nTemp <= 9)
{
cTemp = '0' + nTemp;
}
else if(nTemp >= 10 && nTemp<=15)
{
cTemp = 'A' + nTemp - 10;
}
strHex.push_back(cTemp);
//low 4bits
nTemp = cBytes[i] & 0x0F;
if(nTemp >=0 && nTemp <= 9)
{
cTemp = '0' + nTemp;
}
else if(nTemp >= 10 && nTemp<=15)
{
cTemp = 'A' + nTemp - 10;
}
strHex.push_back(cTemp);
}
return strHex;
}