将十六进制转换为ASCII码在Lua解析器中的实现

我正在尝试将十六进制字节转换为它们的 ASCII 值并显示出来。如果有人能够在正确的方向上给我指点一下,我将不胜感激。我尝试了许多 uint 类型的命令,并使用 buffer(x, 2) 作为参数。

点赞
用户107090
用户107090

我不确定你所说的“十六进制字节”,但相关的函数有:

2014-07-15 11:15:02
用户427545
用户427545

单个十六进制字符可以使用 string.byte,如 lhf 所提到的。对于更长的序列,你可以在 Lua 中创建一个循环,但这不是很有效率,因为它涉及到大量的复制。

自 Wireshark 1.11.3 起,有一个 Struct.fromhex 函数,可以将十六进制字符的字符串转换为二进制等效物。

示例:

-- 从十六进制转换为字节(没有分隔符)
assert(Struct.fromhex("5753") == "WS")
-- 从十六进制转换为字节(使用单个空格作为分隔符)
assert(Struct.fromhex("57 53", " ") == "WS")

类似地,Struct.tohex 函数可以将字节转换为十六进制。

2017-02-27 10:58:59