方法1:
转自:char数组与十六进制字符串互转 - feipeng8848 - 博客园 (cnblogs.com)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define hexStrToUint8(dest, str, strLen) \
unsigned int val;\
for(int i = 0; i < strLen; i += 2){\
sscanf(str + i, "%02x", &val);\
dest[i / 2] = val;\
}
#define logBuf(buf, len)\
for(int i = 0; i < len; i++){\
printf("0x%02x ", (unsigned char)buf[i]);\
}\
printf("\n");
#define uint8ToHexStr(dest, src, len)\
for(int i = 0; i < len; i++ ){\
sprintf(&dest[i * 2], "%02x", (unsigned char)src[i]);\
}\
dest[len * 2] = '\0';
int main(){
char f[] = "32FF14981533F9F8F7E7E8E9EE";
char dst[100];
char dst_2[100];
hexStrToUint8(dst, f, sizeof(f));
logBuf(dst, sizeof(f) / 2);
uint8ToHexStr(dst_2, dst, sizeof(f) / 2);
printf("%s\n", dst_2);
return 0;
}
方法2:
转自:(4条消息) 字符char转十六进制Hex_肥宅不死的博客-CSDN博客_char转16进制
(ฅ>ω<*ฅ) 噫又好了~ C语言快速互转HEX(16进制)和原始字符串/数组 – 晨旭的博客~ (chenxublog.com)
void char_to_hex(char *src, int len, char *des)
{
char hex_table[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
while (len--)
{
*(des++) = hex_table[(*src) >> 4];
*(des++) = hex_table[*(src++) & 0x0f];
}
}