Мне нужен метод, как я могу получить шестнадцатеричное число из массива, а затем передать его в переменную с типом int. Я знаю, что это звучит просто, но мне нужно это "особым образом" - например:
Я задал шестнадцатеричный цвет RGB: 01a7ff — и сохранил значения R, G и B в дополнительных массивах — выглядя так:
char red[3];
red[0] = '0';
red[1] = '1';
red[2] = '\0';
char green[3];
green[0] = 'a';
green[1] = '7';
green[2] = '\0';
char blue[3];
blue[0] = 'f';
blue[1] = 'f';
blue[2] = '\0';
Теперь я хочу передать полный массив красного, зеленого и синего в зарезервированный массив malloc, чтобы он выглядел так:
char *data;
data = malloc(sizeof(char)*6);
data[0] = 01; //red array
data[1] = a7; //green array
data[2] = ff; //blue array
Сначала я попытался использовать atoi(), но это не сработало, если в массиве также были шестнадцатеричные литералы (a, b, c, d, e, f) - есть ли у кого-нибудь решение для меня?
Ваше здоровье
man strtoul
поможет. - person Eugene Sh.   schedule 04.12.2017strtol
, но все время, когда я делал это, шестнадцатеричное число затем преобразовывалось в десятичное число..man strtoul
отличается? - person s.r.   schedule 04.12.2017data[1] = green;
- person s.r.   schedule 04.12.2017data
был массивом указателей на строки? Или даже массив строк? - person Eugene Sh.   schedule 04.12.2017char *data
может работать не так, как ожидалось; обычныйchar
может бытьsigned
илиunsigned
, а0xff
может не вписываться вsigned char
. Вместо этого рассмотримunsigned char *data
. - person ad absurdum   schedule 04.12.2017