Я нашел множество различных решений этой проблемы, но не все они работают, и многие из них кажутся несколько хакерскими и неэффективными. В основном у меня есть строка шестнадцатеричных данных (т. Е. «55 AA 41 2A 00 94 55 AA BB BB 00 FF»), которые я хотел бы преобразовать в необработанные данные. Каков наилучший способ сделать это?Преобразование шестнадцатеричной строки в данные
UPDATE: Решение Vicky отлично поработало для меня, но я сменил его на работу с шестнадцатеричными строками, которые не имеют пробелов между ними и немного изменили стиль.
int i = 0;
char *hexString = "55AA412A009455AABBBB00FF"
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;
Не могли бы вы уточнить, в ближайшее время, на несколько подходов вы пробовали и в какой тип контекста этот код должен поместиться? – nielsj
(Возможно, не самый лучший, но самый короткий из них наверняка;) возможный дубликат [Code golf - hex to (raw) двоичное преобразование] (http://stackoverflow.com/questions/795027/code-golf-hex-to-raw -binary-conversion) – zaf
zaf, это именно то, что я хотел, извините, что раньше этого не видел. Думаю, это будет в некотором роде дубликат этого. – AriX