Lua,二进制值转Ascii字符串

我一直在阅读此页面(以及其他),但还是找不到答案。

我正在尝试让Lua将8位值(即从0到255的整数)转换为相应Hex字符的2字节Ascii表示

我知道唯一可用于此目的的Lua语法是...

MyString = string.format(“%1x”,That_Number)

...但是,当数字为0到15时,该语法给出:1 2 3 4 5 6 7 8 9a b c d e f

...而这正是我想要的内容:01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

我的问题:是否有一个简单的语法可以保证我获得"两位" Ascii表示?

("简单"意味着它已经内置在语法中;不是我必须编写的函数)

附:如果我可以将字符“A,B,C,D,E,F”作为大写字符获取,则会很好。

点赞
用户258523
用户258523

string.format("%02X", 14))

0 用于将空格填充为零。 2 用于强制字符宽度为两个字符 (而不是你的示例中的 1)。 X 用于大写字母输出而不是小写字母。

需要指出的是,本答案基本上与 Lua 无关,因为这些是 printf 标准序列和格式选项。

Lua 参考手册 表明:

格式字符串遵循与 printf 标准 C 函数相同的规则。 其唯一的区别是不支持选项/修改符 *、l、L、n、p 和 h,并且有一个额外的选项 q。

因此,我们可以推断出,xX 格式说明符可用,并保留了通常的宽度和前导零修改符。

相同的原则适用于许多 Lua 库函数。您经常需要参考 Lua 参考中提到的相关标准 C 运行时库函数,以获得完整的理解。

2013-12-26 20:51:11