如何在C中右键填充十六进制

时间:2015-03-29 01:30:48

标签: c

所以我知道(经过大量令人困惑的谷歌搜索),要正确填充字符串,可以使用fprintf(“% - 10s”,字符串)或类似的东西来填充最多10个长度的空格。 / p>

所以我有两个问题:

我知道左边的垫子很相似,但它的语法是什么? (对不起,我做了google,但是由于相互矛盾的答案而感到困惑......)

更重要的是,我如何正确填充十六进制?假设我有一个int我想用%02X转换为十六进制。我还能使用%-1002X吗?不会搞砸了吗?

2 个答案:

答案 0 :(得分:1)

printf转换格式允许您左键填充或右键填充转换结果,但不能同时使用两者。右填充整数转换与右填充其他任何东西相同 - 只需指定负字段宽度,如%-10x。您不能同时使用左键盘和右键盘:您只能在格式中指定一个宽度。您的原始%02x已明确使用左边距。你无法在其上添加右边填充。

但是,%02x的目的似乎是产生至少有2位数的零填充输出。这可以通过使用格式的 precision 组件而不是 width 来实现。像%.2x这样的格式也会成功生成2位十六进制转换。

通过使用精度而不是宽度,可以保留宽度以用于填充。例如。像%-10.2x这样的格式会产生2位数的转换(用零填充),右边用空格填充10个字符。

答案 1 :(得分:0)

尝试

printf("Hex %8.8x", someInt);

或者使用fprintf()sprintf()snprintf(),无论如何...如果您使用十六进制字符串,请使用snprintf() %-8s格式说明符,用于将转换捕获到char *缓冲区,然后使用for循环或用'0'字符替换空格。