这道类型准换题答案是什么啊为什么啊求大师讲解,该怎么解决

这道类型准换题答案是什么啊,为什么啊,求大师讲解
#include <stdio.h>

int main()
{
  unsigned int a = 0xFFFFFFF7;
  unsigned char i = (unsigned char)a;
  char* b = (char*)&a;

  printf("%o8x, %o8x", i, *b);
  return 0;
}

------解决方案--------------------
假设整型有32位
如果按char型有8位处理,i的值为0xf7
*b的值要看机器的大小端设置。如果是大端,*b为0xff,否则为0xf7
所以最后的输出为fffffff7,ffffffff 或者
fffffff7,fffffff7
因为最后输出时是按整型,都扩展成了整型的位数