一、字符串转换为十六进制的整形:
int hex_string_to_u8(const char *hex_str, uint8_t *out)
{
if(strlen(hex_str) & 1){ //长度是否为奇数
printf("hex_str is error!\n");
return -1;
}
char byte[3] = {0};
const char *p = hex_str;
int j = 0;
for(int i=0; i<strlen(hex_str); i+=2){
memcpy(byte, &p[i], 2);
out[j++] = strtol(byte, NULL, 16);
}
return 0;
}
二、十六进制的整形转换为字符串:
int arrayToStr(uint8_t *buf, uint8_t buflen, char *out)
{
char strBuf[400] = {0};
char pbuf[400];
int a,i;
a=0;
memset(pbuf,0,400);
for(i = 0; i < buflen; i++)
{
a+= sprintf(pbuf+a, "%02X", buf[i]);
}
strncpy(out, pbuf, buflen*2);
out[buflen*2] = '\0'; //
return buflen * 2;
}