1 (2022-04-20 09:20:55 отредактировано swerg)

Тема: Битовые операции в Lua 5.3 и 5.4

Внутри QUIK для битовых операций уже привычно использовать функции библиотеки bit:

  • bit.band(x,y) - побитовое И для x,y

  • bit.bor(x,y) - побитовое ИЛИ для x,y

  • bit.bxor(x,y) - побитовое исключающее ИЛИ для x,y

  • и т.д.

И как-то я упустил, что в Lua 5.3 появились встроенные битовые операторы:

  • x & y - побитовое И для x и y, аналогично bit.band

  • x | y - побитовое ИЛИ для x и y, аналогично bit.bor

  • x ~ y - побитовое исключающее ИЛИ для x и y, аналогично bit.bxor

  • ~ x - битовая инверсия для x, аналогично bit.bnot

  • x >> n - битовый сдвиг x вправо на n бит, аналогично bit.rshift

  • x << n - битовый сдвиг x влево на n бит, аналогично bit.lshift

Возвращаемый такими операторами результат имеет тип Integer.

Операторы >> и << сдвигают значение с потерей битов (не циклически), дополняя значение нулевыми битами слева (для >>) или справа (для <<).

Теперь в версиях терминала QUIK, где доступны Lua5.3 и Lua5.4, можно пользоваться встроенными операторами вместо библиотеки bit.
Встроенные операторы покрывают не все функции библиотеки bit, но для требуемых в QUIK задач их более чем достаточно.

2 (2022-09-02 13:48:59 отредактировано dark184)

Re: Битовые операции в Lua 5.3 и 5.4

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

')' expected near '&'

id = (order.trans_id & 0xFF000)

или если так

id = order.trans_id & 0xFF000

то неожиданный символ '&'...
Вроде самая последняя версия терминала, а робот не запускается... Пользоваться опять bit?

3

Re: Битовые операции в Lua 5.3 и 5.4

dark184,
вот здесь какая версия Lua у вас отображается? и в какой версии Lua  запускаете скрипт?
https://quik2dde.ru/static-img/370/lua_ver.png

Хотя по идее там или 5.3 или 5.4 и в обоих все работает.

Например, вот такой скрипт у меня корректно отрабатывает и при выборе 5.3, и при выборе 5.4 версии Lua для запуска.

order = {}
order.trans_id = 5

id = (order.trans_id & 0xFF000)

message(tostring(id))

4 (2022-09-04 12:15:19 отредактировано dark184)

Re: Битовые операции в Lua 5.3 и 5.4

Всем спасибо, отбой воздушной тревоги smile
[img]Не разобрался как добавить изображение smile 5.4.1 и 5.3.5[/img]
В общем проблема оказалась до крайности проста. В связи с тем, что перешел на ноут где небыло квика, пришлось его ставить заново. Скачал, поставил, при подключении он вывел сообщение о том, что неплохо бы было обновиться. Само собой согласился. Начал скачивать все файлы и тут началась чехарда с интернетом, с одной точки доступа толи кончился траффик, толи она глюкнула, вобщем траффика нет хоть тресни, настроил точку с мобилы, траффик вроде пошел и... Тоже кончился, похоже у мобильного оператора стоит ограничение на раздачу, не знаю, т.к. симка служебная smile В итоге нашли еще одну точку доступа где все в порядке... Скачал, обновил, перезагрузил квик и... вигвам. Буквально вчера утром полез глянуть на обновленные файлы, а там штук пять "устарел". Среди них толи qlua.dll толи quik.dll, файл справки QLUA еще несколько...
Почему так произошло ума не приложу, квик фиг дастся обновиться пока все файлы не скачаешь, это я знаю точно. В общем толи лыжи не едут, толи квик приплющило, когда началась чехарда с интернетом smile Сейчас сделал по человечески, все обновилось и заработало.