Похоже опять несоответствие в справке?
Для флагов транзакций напечатано "бит 20 (0x21) и бит 21 (0x22)".
Математические маски битов 20 и 21 — 0x100000 и 0x200000;
по самой справке нельзя однозначно установить, где именно опечатка?
справка QLua - версия руководства 13.1;
И еще одно. Как проверять флаг? Для корректного целого flags заявки или собственной сделки:
| Код |
|---|
local is_sell = bit.test(flags, 2) -- 2: номер бита
local is_sell_54 = (flags & 0x4) ~= 0 -- 0x4: маска, Lua 5.4.1 |
bit.band(flags, 0x4) возвращает 0 или 4, а не 0 или 1.
Проверять нужно через ~= 0. Кроме того, в Lua число 0 считается истинным, поэтому if bit.band(...) then — опасная проверка.
Почему Так?