【问题标题】:Padding a hexadecimal string with zeros to a 6 character length用零填充十六进制字符串到 6 个字符长度
【发布时间】:2019-03-01 22:28:41
【问题描述】:

我有这个:

function dec2hex(IN)
  local OUT
  OUT = string.format("%x",IN)
  return OUT
end

并且需要IN 将零填充到字符串长度为 6。

我不能使用String.Utils 或PadLeft。它位于一个名为 Watchmaker 的应用程序中,该应用程序使用 Lua 的精简版。

【问题讨论】:

  • OUT = ('0'):rep(6-#OUT)..OUT
  • 是的!那行得通...我以前从未见过代表...而且我已经搜索了 Lua 文档。

标签: string lua formatting padding


【解决方案1】:

如果您将格式字符串存储在本地,则可以对格式字符串调用 format 方法,@Henri 的示例将导致 ("%06x"):format(0xffff)

print(("%06x"):format(0xffff)) -- Prints `00ffff`

您可以在hex format 中输入数字。和C一样。

【讨论】:

  • 要在左键盘之间切换,您可以使用 + 例如("%+6x") 和右侧焊盘 ("%-6x")
【解决方案2】:

Lua 中的字符串格式与 C 中的工作方式基本相同。因此,要用零填充数字,只需使用 %0n ,其中 n 是位置数。例如

print(string.format("%06x", 16^4-1))

将打印00ffff。

详见“Lua 编程”的第 20 章The String Library、string.format 的引用以及函数printf family 的 C 参考。

【讨论】:

  • 但我没有填充一个数字,而是填充了一个十六进制字符串,因为我猜想我的问题的非人性化编辑版本应该说清楚。不过还是谢谢你。希望这不会被编辑掉......!
  • @Rob 那你在找IN= "ffff" while #IN < 6 do IN = "0" .. IN end吗?
  • 嗯....输出会是什么?我的 Lua 很差……你可能已经注意到了。
  • 基本上上述函数通过其他方式输出一个十六进制字符串,该字符串必须是 6 个字符才能读取为十六进制颜色值,因此如果最终值为 FFFF,则必须填充为 00FFFF,如果 FF 则填充到 0000FF 等等。
猜你喜欢
  • 2016-05-22
  • 2010-10-04
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 2013-08-05
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多