printf按8进制、16进制输出

每次看到人家的十六进制输出,对齐的很好,ff就显示了,而我的总是0xffffffff。
如果是
"%02x",是以0补齐2位数,如果超过2位就显示实际的数;
"%hhx" 是只输出2位数,即便超了,也只显示低两位;
 
因此有了"%02hhx"
void hexdump(char *buf, int num)
{
    int i;

    for(i = 0; i < num; i++)
    {
        printf("%02hhx\t", buf[i]);
        if ((i+1)%8 == 0)
        {
            printf("\n");
        }
    }
    printf("\n");
}

 

posted @ 2013-06-05 13:25  DageKing  阅读(1352)  评论(0编辑  收藏  举报