Кто-нибудь может рассказать мне, как установить или сбросить бит в lua..?

Я хочу выполнить установку и сброс определенного бита в номере. Поскольку я использую lua 5.1, я не могу использовать API и операторы сдвига, поэтому он становится все более и более сложным, поэтому, пожалуйста, помогите мне найти это

2 ответа

bit библиотека поставляется с прошивкой.

Прочтите документацию: https://nodemcu.readthedocs.io/en/release/modules/bit/

Вы можете сделать это без внешних библиотек, если знаете положение бита, который хотите перевернуть.

#! /usr/bin/env lua

local hex  = 0xFF
local maxPos  = 7

local function toggle( num, pos )
    if pos < 0 or pos > maxPos then print( 'pick a valid pos, 0-' ..maxPos )
    else
        local bits = {}  --  populate emtpy table
        for i=1, maxPos do bits[i] = false end

        for i = maxPos, pos +1, -1 do  --  temporarily throw out the high bits
            if num >= 2 ^i then
                num = num -2 ^i
                bits [i +1] = true
            end
         end

        if num >= 2 ^pos then  num = num -2 ^pos  -- flip desired bit
        else                   num = num +2 ^pos
        end

        for i = 1, #bits do  --  add those high bits back in
            if bits[i] then num = num +2 ^(i -1) end
        end

    end ; print( 'current value:', num )
    return num
end

original value: 255
current value: 127
pick a valid pos, 0-7
current value: 127
current value: 255

Другие вопросы по тегам