Вход
Приветствую Вас Гость
 

easy.math.qsp v. 2.4.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# является ограничение на значение аргумента в пределах [-255 ... 255]. Если пределы превышены, функция выдаёт в результат ff. Любое число в пределах преобразуется к двуразрядному шестнадцатеричному числу. Таким образом ограничение на результат лежит в пределах [-ff ... ff].

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

Результат работы функции:
$func('#dec-col#',2147483647)='ff'
$func('#dec-col#',214) = 'd6'
$func('#dec-col#',255) = 'ff'
$func('#dec-col#',-10) = '-0a'
$func('#dec-col#',256) = 'ff'
$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] - цвет. Шестнадцатеричный формат, шестизначное число. (не может быть отрицательным);
result - числовой код цвета в формате QSP.

Функция является как бы надстройкой системной функции 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-2024

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

Наверх