如何在一条printf
语句中使用十六进制前缀“0x”输出一个数字并正确对齐?
例如,如果我尝试用 10 个字符右对齐,但数字小于 10 个字符,如下所示:
printf("0x%10X\n", number);
输出:
我希望它看起来像这样(忽略图片中有不同数字的事实):
我已经尝试了上述代码的一些变体,这是迄今为止我发现的最接近的一个。
使用#
修饰符,使0x
前缀成为字段的一部分。
printf("%#10x\n", number)
使用 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';