printf十六进制输出问题

譬如十六进制变量 m = 4D42,应该如何用printf输出其代表的Ascii字符“BM”,我用的printf("%c",m),只输出第一个字符,printf("%c%c",m)也不行。谢谢!

unsigned int mm = 0x4d42;
fprintf(fp,"%C%C",mm%256,mm/256);

// 小尾序,先取后两位做为第一个字母的ASCII值,再取前两位做为第二个字母的ASCII值,按两个字符打印

printf("%s",m)为什么也不行。。。

要注意,intel处理器是小端的。因此你得这么写:
unsigned int x = 0x424d0000;
printf("%c", ^(unsigned char *)&x)

                        int m=0x4d42;
                            char c = (char)(m>>8);
            char d = (char)(m & 0x00FF);
            System.out.printf("%c%c",c,d);