今天给大家介绍一个非常有效的打印字节数组的函数,它的显示方式跟Linux命令行的hexdump的输出非常类似。
先给大家上一个效果图:
它的输出分为三部分:字节偏移量、16进制字节数据、ASCII码可显字符;
其中ASCII部分,如果对应的字节是非可显字符,则用.代替。
立马送上它的函数实现:
#include <stdio.h>
#include <string.h>
int log_hexdump(const char *title, const unsigned char *data, int len)
{
char str[160], octet[10];
int ofs, i, k, d;
const unsigned char *buf = (const unsigned char *)data;
const char dimm[] = "+------------------------------------------------------------------------------+";
printf("%s (%d bytes):\r\n", title, len);
printf("%s\r\n", dimm);