
/*
 * s:		pointer to string to parse
 * values:	array of ints to store results in
 * count:	number of ints to parse and store in array
 *
 * returns:	1: success, 0: failure (invalid character)
 *
 * NOTE: Does not handle negative numbers. Changing ints to
 * unsigned ints will optimize multiplication further.
 */

int get_values(const char* s, int values[], unsigned int count)
{
	int i, j, temp, value;
	char c;

	for(j = 0; j < count; j++)
	{
		value = 0;

		for(i = 0; i < 4; i++)
		{
			c = *s;

			if ( (c < '0') || (c > '9') ) return 0;

			value <<= 1;
			temp = value << 2;
			value += temp + (c - '0');

			s++;
		}

		values[j] = value;
	}

	return 1;
}
