- 论坛徽章:
- 0
|
int hex2asc( char *dest, const unsigned char *src, unsigned int srclen )
{
if(!src) return 0;
if(!dest) return srclen*2;
unsigned int npos=0;
for(unsigned int loop=0; loop<srclen; loop++)
npos += sprintf(dest+npos,"%02x",(unsigned char)src[loop]);
return npos;
}
int asc2hex( unsigned char *dest, const char *src, unsigned int srclen )
{
if (!src || !src[0] || srclen%2) return 0;
if (!dest) return srclen/2;
unsigned char nibble[2];
unsigned int destlen = srclen/2;
for (unsigned int i = 0; i < destlen; i ++)
{
nibble[0] = *src ++;
nibble[1] = *src ++;
for (unsigned int j = 0; j < 2; j ++)
{
if (nibble[j] >= 'A' && nibble[j] <= 'F')
nibble[j] = nibble[j] - 'A' + 10;
else if (nibble[j] >= 'a' && nibble[j] <= 'f')
nibble[j] = nibble[j] - 'a' + 10;
else if (nibble[j] >= '0' && nibble[j] <= '9')
nibble[j] = nibble[j] - '0';
else
return 0;
}
dest[i] = nibble[0] << 4; // Set the high nibble
dest[i] |= nibble[1]; // Set the low nibble
}
return destlen;
} |
|