我有字符串十六进制。 std :: string x =" 68656c6c6f" ; 我想将它转换为字符数组 数组中的每个元素都是2个十六进制数 恩。
char c[5]={0x68,0x65,0x6c,0x6c,0x6f} ;
我使用的是c ++,而且我已经有了十六进制数字的字符串,而且我没有选择将值作为字符数组读取。
我无法使用scanf("%x",&c[i]);
答案 0 :(得分:0)
C(也适用于C ++)
int cnvhex(const char *num, int *table)
{
const char *ptr;
int index = (num == NULL || table == NULL) * -1;
size_t len = strlen(num);
ptr = num + len - 2;
if (!index)
{
for (index = 0; index < len / 2; index++)
{
char tmp[3] = { 0, };
strncpy(tmp, ptr, 2);
if (sscanf(tmp, "%x", table + index) != 1)
{
index = -1;
break;
}
ptr -= 2;
}
if (index != -1 && (len & 1))
{
char tmp[2] = { *num, 0};
if(sscanf(tmp, "%x", table + index++) != 1) index = -1;
}
}
return index;
}