关于wireshark dissector:lua tables – 字符串表示

lua tables - string representation

作为 lua 表的后续问题 - 允许的值和语法:

我需要一个将大数等同于字符串的表格。问题似乎是不允许使用标点符号的字符串:

1
2
3
4
local Names = {
   [7022003001] = fulsom jct, OH
   [7022003002] = kennedy center, NY
}

但引号都不是:

1
2
3
4
local Names = {
   [7022003001] ="fulsom jct, OH"
   [7022003002] ="kennedy center, NY"
}

我什至试过不加空格:

1
2
3
4
local Names = {
   [7022003001] = fulsomjctOH
   [7022003002] = kennedycenterNY
}

加载此模块时,wireshark 抱怨 "}" 应该在 line 处关闭 "{"。如何使用包含空格和标点符号的字符串实现表?


根据 Lua 参考手册 - 3.1 - 词汇约定:

A short literal string can be delimited by matching single or double quotes, and can contain the (...) C-like escape sequences (...).

这意味着Lua中的短文字字符串是:

1
local foo ="I'm a string literal"

这与您的第二个示例相匹配。它失败的原因是因为它缺少表成员之间的分隔符:

1
2
3
4
local Names = {
   [7022003001] ="fulsom jct, OH",
   [7022003002] ="kennedy center, NY"
}

您还可以在最后一个成员之后添加尾随分隔符。

表构造器的更详细描述可以在3.4.9 - 表构造器中找到。可以通过那里提供的示例来总结:

1
a = { [f(1)] = g;"x","y"; x = 1, f(x), [30] = 23; 45 }

我真的非常推荐使用 Lua 参考手册,它是一个了不起的帮手。

我也强烈建议您阅读一些基本教程,例如15 分钟学会 Lua。他们应该为您提供您尝试使用的语言的概述。