Попытка создать шестнадцатеричный декодер для чтения аргументов из файла командной строки, и у меня возникают проблемы в C с легкими операциями со строковыми функциями.Цель моего шестнадцатеричного декодера состоит в том, чтобы я мог взять шестнадцатеричную строку, например '2d6c002d6100f757372', и превратить ее в набор инструкций для bash, в данном случае -l -a / usr.Моя проблема, однако, заключается в том, что с моим текущим кодом я могу извлечь только каждый из символов, извлеченных из строки, по отдельности, поэтому я получаю 10 символов, которые не имеют смысла для оболочки bash в отдельности.В идеале я хотел бы иметь
args[0] = binary_path
args[1] = "-l"
args[2] = "-a"
args[3] = "/usr"
args[4] = NULL
, но я не могу понять, как сгруппировать строки, которые встречаются перед каждым из 0x00 в моей шестнадцатеричной строке.Вот код, который у меня пока есть для этой проблемы:
int i = 0;
char *hexString = "2d6c002d6100f757372"
char *hexPtr = hexString;
unsigned int *result = calloc(strlen(hexString)/2 + 1, sizeof *result);
while (sscanf(hexPtr, "%02x", &result[i++])) {
hexPtr += 2;
if (hexPtr >= hexString + strlen(hexString))
break;
return result;}