# Скрипты: Строки и Переменные

> Справочник по работе с переменными и строками в скриптах NiceProtect. Типы данных, конкатенация и операции присваивания.

Canonical HTML: <https://www.niceprotect.com/help/ru/strings_and_variables.htm>

## Strings and variables


Числа по умолчанию десятичные. Значение с префиксом **0x** (или **$**) считается шестнадцатеричным, остальные — десятичными. Арифметические команды принимают любой из форматов на входе и записывают десятичный результат, поэтому результат одной операции можно сразу использовать в следующей.

**set** <value>, <accumulator> - записать значение в переменную-аккумулятор

**add** <value 1>, <value 2>, <accumulator> - сложение (десятичный результат)

**sub** <value 1>, <value 2>, <accumulator> - вычитание

**mul** <value 1>, <value 2>, <accumulator> - умножение

**div** <value 1>, <value 2>, <accumulator> - целочисленное деление

**calc** <expression>, <accumulator> [, hex] - вычисляет арифметическое выражение с + - * / и скобками; числа могут быть десятичными или hex. Результат десятичный либо HEX-строка без дополнения, если третий параметр равен "hex"

**pack** <value>, <byte|word|dword|qword>, <le|be>, <accumulator> - кодирует число в HEX-строку байтов фиксированной ширины в порядке little- или big-endian для записи через putcode

**unpack** <hex_bytes>, <le|be>, <accumulator> - декодирует HEX-строку байтов обратно в десятичное число

**concat** <value 1>, <value 2>, <accumulator> - объединение строк

**chrtohex** <char>, <accumulator> - преобразовать символ в HEX

**hextochr** <hex>, <accumulator> - преобразовать HEX в символ

**substr** <string>, <start>, <length>, <accumulator> - извлечь подстроку (start считается с 1)

**length** <string>, <accumulator> - длина строки

**createstring** <char>, <count>, <accumulator> - строка из повторяющегося символа

**rndbyte** <accumulator> - записать случайный байт (00..FF) в аккумулятор в виде двухзначной HEX-строки

**invert** <value>, <accumulator> - кодирует значение как 4-байтовую HEX-строку в порядке little-endian (например, 0x00401011 преобразуется в 11104000). Оставлена для совместимости; pack <value>, dword, le, <accumulator> — более понятный аналог

**settoclipboard** <text> - скопировать текст в буфер обмена
