0

在我的解剖器中,我有这个代码

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) 所以,正如我上面提到的,不依赖此代码的部分可以正常工作。

4

1 回答 1

0

差点忘了发布解决方案。问题是我的解析器不涵盖空应用程序协议有效负载的情况,这就是我收到这些错误的原因。解决方案是添加一个“if”语句,用于检查有效负载的长度。

于 2014-02-14T16:10:22.913 回答