Lua解析器中将十六进制转换为ASCII

3

我正在尝试将十六进制字节显示为它们的ASCII值。如果有人能够指导我正确的方向,我会非常感激。我已经尝试了许多uint类型命令,并且使用buffer(x,2)作为参数。


如果你想将包含十六进制数字的字符串转换,可以使用tonumber,例如print(string.char(tonumber("56", 16)))(输出V)。 - dualed
2个回答

3
我不确定您所说的“十六进制字节”是什么意思,但相关函数如下: 请注意,保留了HTML标签。

我的意思是一对十六进制位,不知道为什么我决定那是一个字节,谢谢,我会尝试使用这些函数。 - user3688020

1

对于十六进制中的单个字符,您可以使用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函数可以将字节转换为十六进制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接