16进制和字符串的相互转换
程序员文章站
2024-03-16 22:53:16
...
```c
char ptmp[128];
void strtohex(char *in, u8* out)
{
int lengthp = 0;
int lengthtmp = 0;
int i = 0;
memset(ptmp, 0, sizeof(ptmp));
memset(out, 0, 57);
lengthp = strlen(in);
for (i = 0; i < lengthp; i++)
{
if (in[i] <= '9') ptmp[i] = in[i] - '0';
else if (in[i] > 'Z') ptmp[i] = in[i] - 'a' + 10;
else ptmp[i] = in[i] - 'A' + 10;
}
for (i = 0; i < lengthp / 2; i++)
{
out[i] = (ptmp[i * 2] * 16) + ptmp[i * 2 + 1];
}
}
void hextostr(char*in, int len, u8* out)
{
char getdatatmp[3];
int i = 0;
memset(out, '\0', 57);
for (i = 0; i < len; i++)
{
memset(getdatatmp, 0, sizeof(getdatatmp));
sprintf(getdatatmp, "%02x", (unsigned char)in[i]);
memcpy(&out[i * 2], getdatatmp, 2);
}
}