格式说明符%02x

use*_*225 29 c printf format-specifiers

我有一个简单的程序:

#include <stdio.h>
int main()
{
        long i = 16843009;
        printf ("%02x \n" ,i);
}
Run Code Online (Sandbox Code Playgroud)

我使用%02x格式说明符来获得2个char输出,但是,我得到的输出是:

1010101 
Run Code Online (Sandbox Code Playgroud)

虽然我期待它:01010101.

ara*_*aer 44

%02x意味着打印至少2位数字,0如果有更少的话,请在前面添加.在你的情况下它是7位数,所以你没有额外0的前面.

另外,%x对于int,但你有一个很长的.试试吧%08lx.

  • `x`指的是"十六进制格式的整数",而不是"d",即"十进制格式的整数".两者都接受`int`作为要打印的值.`lx`和`ld`都接受`long`. (10认同)
  • 我已经知道'%x'中的'x'指的是十六进制格式而不是int.是这样吗? (3认同)

Pul*_*put 9

%x是格式化和输出十六进制值的格式说明符。如果您提供 int 或 long 值,它会将其转换为十六进制值。

%02x意味着如果您提供的值小于两位数,0则将在前面加上。

您提供的值16843009已转换为1010101十六进制值。


PP.*_*PP. 2

您的字符串比格式宽度 2 更宽。因此无需进行填充。