logo.aleks Versus
Приветствую Вас Гость
 

easy.math.qsp v 2.3.0

Операции над шестнадцатеричными числами

#hex-dec#

 ↑ Наверх 

Функция перевода из гексаметричного числа в декаметричное. Не работает с отрицательными значениями.

Использует циклический алгоритм перевода, в связи с чем может заметно подвешивать игру при переводе больших чисел. Имеет те же ограничения на значение результата, что и прочие фукции, т.е. результат должен лежать в пределе [-2147483648 ... 2147483647] (для Q.S.P. 5.7.0).

$args[0] - шестнадцатеричное число (текстовое значение). Значения в пределе 7fffffff
  result - полученное число

Результат работы функции:

func('#hex-dec#','ff') = 255
func('#hex-dec#','22') = 34
func('#hex-dec#','10') = 16
func('#hex-dec#','1') = 1
func('#hex-dec#','a') = 10
func('#hex-dec#','ffaa233') = 268083763
func('#hex-dec#','ffaa23') = 16755235
func('#hex-dec#','ffaa2') = 1047202
func('#hex-dec#','ffaa233451') = -1440533423
func('#hex-dec#','ffaa23345') = -90033339
func('#hex-dec#','ffaa2334') = -5627084

Как видно, последние три результата получились отрицательными, значит превышены пределы значений резултата, а соответственно и числа, которые переводятся в десятеричную систему тоже превышают предел.

#dec-hex#

 ↑ Наверх 

Функция перевода из декаметричного числа в гексаметричное. Не работает с отрицательными значениями.

Использует циклический алгоритм перевода, в связи с чем может заметно подвешивать игру при переводе больших чисел. Имеет ограничения на значения аргумента в пределе [-2147483648 ... 2147483647] (для Q.S.P. 5.7.0).

 args[0] - целое число (числовой вид). Значения в пределе 2147483647
 $result - полученная строка

Результат работы функции:

$func('#dec-hex#',2147483647) = 7fffffff
$func('#dec-hex#',214) = d6
$func('#dec-hex#',255) = ff
$func('#dec-hex#',10) = a
$func('#dec-hex#',9) = 9
$func('#dec-hex#',2147483648) = -0

Как видно, последний результат получился отрицательным, потому что был превышен предел на значения аргумента.

#dec-col#

 ↑ Наверх 

Преобразует десятеричное число в шестнадцатеричное. Отличием от функции #dec-hex# является ограничение на значение аргумента в пределах [-16777215 ... 16777215]. Если пределы превышены, функция выдаёт в результат 00. Любое число в пределах преобразуется к двуразрядному шестнадцатеричному числу. Таким образом ограничение на результат лежит в пределах [-ff ... ff].

В общем и целом, такое преобразование необходимо для того, чтобы силами QSP конвертировать значения цветовой составляющей от HTML формата (где запись идёт в шестнадцатеричном коде) в RGB формат (где запись идёт в десятеричном коде). Используется в библиотеке easy.titles.qsp для ковертирования цветовых значений.

 args[0] - число целое, десятеричное.
 $result - шестнадцатеричное двуразрядное число (текстовое значение).

Результат работы функции:

$func('#dec-col#',2147483647) = 00
$func('#dec-col#',214) = d6
$func('#dec-col#',255) = ff
$func('#dec-col#',-10) = -0a
$func('#dec-col#',256) = 10
$func('#dec-col#',16) = 10

Данная функция работает с отрицательными значениями, поэтому результат, отмеченный зелёным, верен. Результат, отмеченный красным, - не верен.

#+col#

 ↑ Наверх 

Функция предназначена для изменения цвета для HTML.

! функция использует функции #hex-dec# и #dec-col#.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным)
$args[1] - значение. Шестнадцатеричный формат, двузначное число. (может быть отрицательным)

Функция действует следующим образом: разбивает первый аргумент на три двузначных шестнадцатеричных числа, и к каждому из чисел прибавляет второй аргумент. Если сумма превышает значение ff, она приводится к ff. И напротив, если сумма оказывается меньше 0, она приводится к 0. Таким образом результат работы функции лежит в пределах [000000 ... ffffff]

Это может пригодиться для плавного гашения цвета, или наоборот. Функция используется в движке игры "МАГИКОН", чтобы гасить цвета заголовков в зависимости от уровней.

Результат работы функции:

$func('#+col#','ff0000','-44')  =   bb0000
$func('#+col#','000000','-44')  =   000000
$func('#+col#','dd0000','22')   =   ff2222
$func('#+col#','dd8822','-44')  =   994400
$func('#+col#','dd8822','44')   =   ffcc66

#col-rgb#

 ↑ Наверх 

Данная функция преобразует цвет, записанный в шестнадцатеричной форме, в числовой код цвета, понятный QSP.

! функция использует функцию #hex-dec#.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным)

Функция является как бы надстройкой системной функции rgb и работает следующим образом: шестнадцатеричный код цвета разбивается на три двузначных шестнадцатеричных числа, которые преобразуются в десятеричные числа и передаются функции rgb в качестве аргументов.

Если в качестве аргумента указать неверное шестнадцатеричное число, функция всё равно вернёт результат, заменив неверные символы нулями. То же самое произойдёт, если указать отрицательное шестнадцатеричное число. Минус будет считаться неизвестным символом и #hex-dec# заменит его на ноль. Последняя цифра будет отсечена.

Результат работы функции:

$func('#col-rgb#','ff0000') = -16776961
$func('#col-rgb#','000000') = -16777216
$func('#col-rgb#','dd0000') = -16776995
$func('#col-rgb#','dd8822') = -14513955
$func('#col-rgb#','ffmm00') = -16776961
$func('#col-rgb#','-0000ff') = -15794176

#col-inv#

 ↑ Наверх 

Возвращает шестнадцатеричный код цвета противоположного указанному..

! функция использует функцию #+col#.

$args[0] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным)

Принцип работы прост. Берётся максимальное значение для цветовой составляющей, и из него вычитается соответствующее значение цветовой составляющей исходного цвета. Полученные результаты склеиваются, в результате — цвет противоположный исходному.

Результат работы функции:

В качестве результата работы функции наглядная таблица исходных цветов и противоложных им.

Исходный Противоположный
#000000 #ffffff
#ffffff #000000
#238c90 #dc736f
#902b10 #6fd4ef
#c7c000 #383fff
#07c701 #f838fe

Aleks Versus'Easy Libraries'2013

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013

Полезные ссылки
Архив:
Наверх