/*
* Debugging function to print a hexdump of data with ascii, for example:
* 00000000 74 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d this is a test m
* 00000010 65 73 73 61 67 65 2e 20 62 6c 61 68 2e 00 essage. blah..
*/
void print_hexdump(char *data, int len)
{
int line;
int max_lines = (len / 16) + (len % 16 == 0 ? 0 : 1);
int i;
for(line = 0; line < max_lines; line++)
{
printf("x ", line * 16);
/* print hex */
for(i = line * 16; i < (8 + (line * 16)); i++)
{
if(i < len)
printf("x ", (uint8_t)data[i]);
else
printf(" ");
}
printf(" ");
for(i = (line * 16) + 8; i < (16 + (line * 16)); i++)
{
if(i < len)
printf("x ", (uint8_t)data[i]);
else
printf(" ");
}
printf(" ");
/* print ascii */
for(i = line * 16; i < (8 + (line * 16)); i++)
{
if(i < len)
{
if(32 <= data[i] && data[i] <= 126)
printf("%c", data[i]);
else
printf(".");
}
else
printf(" ");
}
printf(" ");
for(i = (line * 16) + 8; i < (16 + (line * 16)); i++)
{
if(i < len)
{
if(32 <= data[i] && data[i] <= 126)
printf("%c", data[i]);
else
printf(".");
}
else
printf(" ");
}
printf("\n");
}
}
16进制打印字符串数据
最新推荐文章于 2024-07-08 03:19:57 发布