C - 十六进制输出中缺少0

时间:2018-03-28 22:49:36

标签: c hex byte

我必须测试我的机器是使用小端还是大端。出于这个原因,我写了这段代码。我可以看到我的机器正在使用小端。但我不知道为什么我的第一个字节的输出只是D.它不应该是0D吗?

union int2byte
{
    unsigned char bytes[4];
    unsigned int hex;
};

int main(int argc, const char* argv[])
{
    union int2byte hexby;

    hexby.hex = 0xBAADF00D;

    printf("%u\n",hexby.hex);
    int counter;
    for(counter = 0; counter < 4; counter = counter + 1)
    {
        printf("Hex for Byte %u is %X.\n",counter+1, hexby.bytes[counter]); 
    }

}

Output:
3131961357
Hex for Byte 1 is D.
Hex for Byte 2 is F0.
Hex for Byte 3 is AD.
Hex for Byte 4 is BA.

1 个答案:

答案 0 :(得分:4)

%X不输出前导零。请改用%02X2告诉它输出至少2位数,如果输出小于2位,0会告诉它用'0'字符填充左侧的输出。 / p>