首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“tvb(偏移):string()”是什么意思?

“tvb(偏移):string()”是什么意思?
EN

Stack Overflow用户
提问于 2019-04-04 07:27:14
回答 1查看 1.4K关注 0票数 0

这几天,我正在学习如何使用Lua编写WireShark plugin.But --我不知道tvb(offset):string的含义。为什么使用tostring(tvb(offset))是错误的?谢谢你的回答

代码语言:javascript
复制
function weibo.dissector(tvb, pinfo, tree)
    local proto_type = tvb(23, 1):uint();
    if(proto_type ~= 0x06) then
        return
    end

    local offset = get_payload_offset(tvb, proto_type)
    local data = tvb(offset):string();
    local i, j = string.find(data, "weibo")
    if(i) then
        pinfo.cols.protocol = weibo.name
        local subtree = tree:add(weibo, tvb(offset+i-1))
        subtree:append_text(", ptn_pos: " .. i .. "-" .. j)
    end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 14:54:28

无线电视是一个Testy虚拟缓冲器

Tvb (“”)表示数据包的缓冲区。它作为参数传递给侦听器和分解器,并可用于从数据包的数据中提取信息(通过TvbRange)。请注意,Tvbs仅可由当前侦听器或分解调用使用,并且在侦听器/分解器返回时立即被销毁,因此一旦函数返回,对它们的引用就无法使用。

作为tvb(偏移)的调用返回TvbRange

用于提取数据的Tvb中的字节范围。TvbRange是从tvb:__call()tvb:range([offset] [,length])创建的。

备注:无线电视是一张Lua表。如果您像tvb()一样调用它,就会调用__call() 元法

call.28.29

tvb:__call() 描述 从这个Tvb的子集创建一个TvbRange。与tvb相同:range()。不能直接呼叫。 返回 userdata :新的TvbRange

TvbRange的许多方法之一是tvbrange:string()

tvbrange:string() 描述 从TvbRange获取字符串。 返回 string :字符串,包含TvbRange中的所有字节,包括所有零(例如,"a\000bc\000")

另一方面,tostring()是Lua的标准函数之一。

来自https://www.lua.org/manual/5.3/manual.html#pdf-tostring

接收任意类型的值,并以可读的格式将其转换为字符串。(要完全控制数字的转换方式,请使用string.format。)如果v的元值有一个__tostring字段,则tostring以v作为参数调用相应的值,并使用调用的结果作为其结果。

在tvb实现tostring()时,tostring(tvb)将返回该元方法的返回值。

tvb:__tostring() 描述 获取Tvb的字符串表示形式。不能直接呼叫。 返回 string :字符串表示形式

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55510128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档