Я пытаюсь взять шестнадцатеричную строку значений и декодировать ее в обычный текст. Значения в строке должны быть разделены с «00» для NULL, поэтому я пытаюсь проверить, когда появляется «00», и заменить его в декодированной строке на «,», чтобы я мог разграничить значения позже .
int main()
{
char decoded[256];
const char hex[] = "746573743d7468697300746573743d74686973";
strcpy(decoded, "");
char curr[4];
char next[2];
int i = 0;
while (i+1 < strlen(hex)){
if((hex[i] == 0) && (hex[i+1] == 0)){
sprintf(decoded + strlen(decoded), ",");
i = i+2;
}
else{
strcpy(curr, "");
strcpy(next, "");
sprintf(curr, "%c", hex[i]);
sprintf(next, "%c", hex[i+1]);
strcat(curr, next);
int num = (int)strtol(curr, NULL, 16);
sprintf(decoded + strlen(decoded), "%c", num);
i = i+2;
}
}
printf("%s", decoded);
return 0;
}
При выполнении этого я получаю:
test = thistest = this
Что я хочу:
test = this, test = this
Я попытался отладить, просто проверив, что hex [i] = 0, и напечатав что-то, и ничего не появляется, либо. Любые идеи? Спасибо!