static void hex_dump(const unsigned char data[], int bytes)
{
    int i, j;
    char c;

    for (i = 0; i < bytes; i++) {
        if (!(i % 8) && i)
            printf(" ");
        if (!(i % 16) && i) {
            printf("  ");
            for (j = 0; j < 16; j++) {
                c = data[i+j-16];
                if ((c < 0x20) || (c >= 0x7f))
                    c = '.';
                printf("%c", c);
            }
            printf("\n");
        }
        printf("%.2x ", data[i]);
    }
    j = (bytes % 16);
    j = (j != 0 ? j : 16);
    for (i = j; i < 16; i++) {
        if (!(i % 8) && i)
            printf(" ");
        printf("   ");
    }
    printf("   ");
    for (i = bytes - j; i < bytes; i++) {
        c = data[i];
        if ((c < 0x20) || (c >= 0x7f))
            c = '.';
        printf("%c", c);
    }
    printf("\n");
}

 

posted on 2013-09-03 12:12  孜求嵌道  阅读(1311)  评论(0编辑  收藏  举报