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