byte_print 16进制格式打印 buf

2021年12月11日15:10:18 星期六

问题:

用16进制格式打印buf中每个字节,每行打印16个字节。

思路

每次从buf中取 16 字节,
然后逐个打印这16个字节。
直到打印结束为止。

先画流程图,可以把逻辑搞清楚。


flowchart

代码

void byte_print(unsigned char *buf, size_t len)
{
    const unsigned char *c = buf;

    if(NULL == buf)
        return;

    printf("Dumping %zu bytes from %p:\n", len, buf);

    while(len > 0)
    {
        unsigned int i;
        for (i = 0; i < 16; i++)
        {
            if (i < len)
                printf("%02x ", c[i]);
        }

        printf("\n");

        c += 16;

        if (len <= 16)
            break;

        len -= 16;
    }
}

你可能感兴趣的:(byte_print 16进制格式打印 buf)