如何在wireshark中使用lua转换为主机字节顺序

如何在wireshark中使用lua转换为主机字节顺序,lua,wireshark,endianness,Lua,Wireshark,Endianness,我在搜索一个标准函数来进行字节顺序转换以编写wireshark的lua插件时没有遇到任何运气 struct.pack似乎不起作用,至少在执行“require'struct”时,wireshark抛出了一个错误 你可以调用tvb函数来获得一个显式的(我现在就是这么做的,所以它不是可移植的:((())转换为big-endian或little-endian,但不转换为host-endian字节顺序 我在网上搜索了又搜索,但什么也没找到,所以我希望有人能提供一个解决方案 谢谢!如果你能确定你正在运行的系

我在搜索一个标准函数来进行字节顺序转换以编写wireshark的lua插件时没有遇到任何运气

struct.pack似乎不起作用,至少在执行“require'struct”时,wireshark抛出了一个错误

你可以调用tvb函数来获得一个显式的(我现在就是这么做的,所以它不是可移植的:((())转换为big-endian或little-endian,但不转换为host-endian字节顺序

我在网上搜索了又搜索,但什么也没找到,所以我希望有人能提供一个解决方案


谢谢!

如果你能确定你正在运行的系统的终端,这就足够了吗

至少在Lua 5.1和5.2中,字节码头的第7个字节对于小端系统是1,对于大端系统是0。您可以通过以下方式从任何Lua脚本获取此字节:

string.dump(function() end):byte(7)
如果使用LuaJIT,只需检查以下值:

ffi.abi("le")

找到这一点应该足以让您编写可移植代码。

Wireshark接近于支持struct.unpack方式。它还没有稳定的发行版


可能重复?谢谢,我尝试导入struct模块,但wireshark抛出了一个错误。我没有进一步探索,只是假设wireshark内置的lua解释器无法使用。很好的一行代码。它适用于wireshark的lua插件。是的,只要我知道系统的尾端,我就可以调用钻机ht转换功能。非常感谢!