大小端存储出现打印出来多出6个F的问题

为什么出现这样的情况?

#include <stdio.h>
#include <string.h>
union ss
{
    int num;
    char buf[4];
};
int main()
{
    union ss test;
    test.num=0x12436597;
    for(i=0;i<4;i++)
        printf("%x\n",test.buf[i]);
    return 0;
}
结果是:
ffffff97
65
43
12
#include <stdio.h>
#include <string.h>
union ss
{
    int num;
    char buf[4];
};
int main()
{
    union ss test;
    test.num=0x12436597;
    for(i=0;i<4;i++)
        printf("%x\n",test.buf[i]);
    return 0;
}

结果是:
79
65
43
12

0x97 一个字节(1001 0111) 十进制 -105;打印的时候是以四个字节打印十六进制,-105,在四个字节里就是0xFFFFFF97;

printf("%x\n",test.buf[i]);
-->
printf("%x\n",(unsigned char)test.buf[i]);