1

如何在一条printf语句中使用十六进制前缀“0x”输出一个数字并正确对齐?

例如,如果我尝试用 10 个字符右对齐,但数字小于 10 个字符,如下所示:

printf("0x%10X\n", number);

输出:

在此处输入图像描述


我希望它看起来像这样(忽略图片中有不同数字的事实):

在此处输入图像描述


我已经尝试了上述代码的一些变体,这是迄今为止我发现的最接近的一个。

4

2 回答 2

3

使用#修饰符,使0x前缀成为字段的一部分。

printf("%#10x\n", number)
于 2013-11-03T23:33:59.060 回答
2

使用 C++ I/O 流修饰符同样有效(它也更安全):

unsigned int short_hexidecimal_value = 0xff; //Less than ten characters in hex.
unsigned long long long_hexidecimal_value = 0xfabcdef987; //Ten or more characters in hex.
std::cout << std::setw(20) << std::right << std::uppercase << std::hex << "0x" << short_hexidecimal_value << '\n';
std::cout << std::setw(20) << "0x" << long_hexidecimal_value  << '\n';
于 2013-11-03T23:51:35.127 回答