/* 单个字节转换 */
int shex2int(const char *str)
{
unsigned int len = strlen((const char *)str);
int ret;
if (len > 2)
return -1;
sscanf(str, "%x", &ret);
return ret;
}
/* 多个字节转换 */
int shex2nint(const char *str, unsigned char *dec, unsigned int n)
{
int ret;
char tmp[3];
for (int i = 0; i < n; i++) {
strncpy(tmp, str + i * 2, 2);
tmp[2] = '\0';
ret = shex2int(tmp);
if (ret < 0) {
return -1;
} else {
dec[i] = ret;
}
}
return 0;
}
int main()
{
int ret;
char debug1[16] = "0123456789ABCDEF";
unsigned char debug2[8];
memset(debug2, 0, 8);
ret = shex2nint(debug1, debug2, 8);
return 0;
}