在我的解剖器中,我有这个代码
local defaultdata = data_tvb():bytes()
local newdata = ByteArray.new()
newdata:set_size(defaultdata:len())
for i=0,defaultdata:len()-2 do
local var = bit.band((bit.lshift(defaultdata:get_index(i), 1) + bit.rshift(defaultdata:get_index(i+1), 7)), 0xff)
newdata:set_index(i, var) end
local var = bit.band((bit.lshift(defaultdata:get_index(defaultdata:len()-1), 1) + bit.rshift(defaultdata:get_index(0), 7)), 0xff)
newdata:set_index(defaultdata:len()-1,var)
data_tvb = ByteArray.tvb(newdata, "Decoded") end
我的问题是函数中的第二个按位运算get_index
。
我知道,这个问题可能出在get_index(0)
或get_index(defaultdata:len()-1)
因为在 Lua 中没有零索引的元素(不是 C 的元素),但实际上没有任何东西适用于其他值。
对于任何值,我都会收到以下消息:bad argument #1 to 'get_index' (index out of range)
所以,正如我上面提到的,不依赖此代码的部分可以正常工作。