Lua,Ascii字符串来自二进制值

Use*_*r.1 2 lua

我一直在阅读这个页面 (除其他外),但仍然找不到我的答案.

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

我知道如何使用的唯一Lua语法就是这个...

 MyString =  string.format("%1x", That_Number  )  
Run Code Online (Sandbox Code Playgroud)

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

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

我的问题: 是否有一个简单的语法来保证我的"两位数"Ascii表示?

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

ps,如果我能将A, B, C, D, E, F字符作为大写字母,那就太好了.

Eta*_*ner 6

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

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

应该指出的是,基本上没有一个答案是Lua特定的,因为那些是printf标准序列和格式选项.

Lua的参考手册说:

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

所以我们可以推断出xX格式说明符可以使用通常的宽度和前导零修饰符.

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

  • 我大胆地扩展了你的非常好的答案,链接到'printf`和`string.format`文档,希望这种事情能够帮助未来的人们找到这个问题.扩展你的似乎比添加我自己的多余答案更公平...... (2认同)