代码之家  ›  专栏  ›  技术社区  ›  DenoDev

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

  •  1
  • DenoDev  · 技术社区  · 7 年前

    我必须测试我的机器是使用little还是big endian。为此,我编写了这段代码。我可以看到我的机器正在使用小endian。但我不知道为什么我的第一个字节的输出只有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 回复  |  直到 7 年前
        1
  •  5
  •   Remy Lebeau    7 年前

    %X 不输出前导零。使用 %02X 相反这个 2 告诉它输出至少2个数字 0 告诉它用 '0' 如果输出少于2位,则为字符。