Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция DecimalToHexadecimal

OKStyle

Эксперт
Описание функции: Функция переводит число в HEX. Используется для цветов. Вот только в SA-MP непонятный формат типа 4278190335 (0xFF0000FF) - какой алгоритм кодирования пока не изучал. Для обычных чисел (0..16777215) работает стабильно и верно. Использовался алгоритм отсюда: (не реклама) Многие знают инклюд dutils от DracoBlue, в котором есть подобная функция. По скорости замеры дают НЕПОНЯТНЫЕ данные, поэтому ничего говорить не буду. Результат функции: 0x******FF, где ****** - hex-код цвета. Есть чем улучшить - делитесь.
Параметры: number - число для конвертации
Описание параметров функции: number - число от 0 до 16777215
Примеры: printf("%s", DecimalToHexadecimal(16700215));
Код:

PHP:
stock DecimalToHexadecimal(number)
{
	new output[66], HexNum[17] = {"0123456789ABCDEF"}; // 66 for error message [max 11 symbols for hex code]
	if(number < 0 || number > 16777215)
	{
		output = "[Error] Convert Aborted: Min number is 0 & Max number is 16777215";
		return output;
	}
	if(!number) // see below
	{
		output = "0x000000FF";
		return output;
	}
	for(new a = number, dt[2]; a != 0; a = (a - a % 16) / 16) // a > 0 gives server's crash
	{
		format(dt, sizeof(dt), "%c", HexNum[a % 16]);
		strins(output, dt, 0, 1);
	}
	new dcnt = 1;
	while((number /= 10) != 0) dcnt++;
	for(new i = 6; i > dcnt; i--) strcat(output, "0"); // 6 is max length of color
	strins(output, "0x", 0);
	strcat(output, "FF");
	return output;
}
Автор: OKStyle
 
Последнее редактирование:
Сверху Снизу