我正在尝试将十六进制字节显示为它们的ASCII值。如果有人能够指导我正确的方向,我会非常感激。我已经尝试了许多uint类型命令,并且使用buffer(x,2)作为参数。
string.byte
,将字符转换为数字编码
string.char
,将数字编码转换为字符
对于十六进制中的单个字符,您可以使用lhf提到的string.byte
。对于更长的序列,您可以在Lua中创建一个循环,但这不是非常有效,因为它涉及大量的复制。
自Wireshark 1.11.3以来,有一个Struct.fromhex
函数,将十六进制字符的字符串转换为二进制等效物。
例子:
-- From hex to bytes (with no separators)
assert(Struct.fromhex("5753") == "WS")
-- From hex to bytes (using a single space as separator)
assert(Struct.fromhex("57 53", " ") == "WS")
Struct.tohex
函数可以将字节转换为十六进制。
tonumber
,例如print(string.char(tonumber("56", 16)))
(输出V
)。 - dualed