OKStyle
Эксперт
Описание функции: Функция переводит число в HEX. Используется для цветов. Вот только в SA-MP непонятный формат типа 4278190335 (0xFF0000FF) - какой алгоритм кодирования пока не изучал. Для обычных чисел (0..16777215) работает стабильно и верно. Использовался алгоритм отсюда:
Параметры: number - число для конвертации
Описание параметров функции: number - число от 0 до 16777215
Примеры: printf("%s", DecimalToHexadecimal(16700215));
Код:
Автор: OKStyle
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
(не реклама) Многие знают инклюд 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;
}
Последнее редактирование:
