所以我知道(经过大量令人困惑的谷歌搜索后),要右填充字符串,可以使用 fprintf("%-10s", string) 或类似的东西来填充最多 10 个长度的空格。
所以我有两个问题:
我知道 left-pad 是类似的,但是它的语法是什么? (抱歉,我用谷歌搜索了,但由于相互矛盾的答案而感到困惑......)
更重要的是,我如何右填充十六进制?假设我有一个 int,我想用 %02X 转换为十六进制。我还能使用 %-1002X 吗?这不会搞砸吗?
最佳答案
printf
转换格式允许您向左填充或向右填充转换结果,但不能同时进行两者。右填充整数转换与右填充其他任何内容相同 - 只需指定负字段宽度,例如 %-10x
。您不能同时使用左填充和右填充:您只能在格式中指定一个宽度。您原来的 %02x
已明确使用左侧填充。您不能在此基础上添加右内边距。
但是,%02x
的目的似乎是生成至少包含 2 位数字的零填充输出。这可以通过使用格式的精度组件而不是使用宽度来实现。 %.2x
等格式也将成功生成 2 位十六进制转换。
通过使用精度而不是宽度,您可以将宽度留作填充用途。例如。像 %-10.2x
这样的格式将产生 2 位转换(用零填充),并用空格填充到 10 个字符。
关于c - 如何在 C 中右填充十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324652/