c lib中是否有一个函数可以打印类似于Wireshark格式的数据包(位置然后逐字节)
is there a function in a c lib to print data packets similar to Wireshark format (position then byte by byte)
C库中有没有类似于Wireshark格式打印数据包的函数(位置然后逐字节)
我查阅了他们的代码,发现他们使用的树对我的任务来说太复杂了。我也可以从头开始编写我自己的版本,但我不想重新发明轮子,所以我想知道是否有一些我可以使用的代码。我可以使用的库有什么建议吗?
*我的数据在无符号整数缓冲区中。
0000 01 02 ff 45 a3 00 90 00 00 00 00 00 00
0010 00 00 00 00 00 00 00 00 00 00 00 00 00
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 ... etc
谢谢!
我怀疑libC中是否存在这样的特定功能,但系统相当简单:
for (unsigned k = 0; k < len; k++)
{
if (k % 0x10 == 0)
printf("\n%04x", k);
if (k % 0x4 == 0)
printf(" ");
printf(" %02x", buffer[k] & 0xff);
}
将第一个模数替换为行长,将第二个模数替换为字长就可以了(当然,尽量使一个是另一个的倍数)
编辑:
我刚刚注意到您提到您拥有的数据位于无符号整数缓冲区中,对于这部分,您必须将其转换为无符号字符缓冲区。
当然,您可以使用带位移位的无符号缓冲区和每个循环打印四次来完成此操作,但这确实会在不必要的地方产生繁琐的代码
C库中有没有类似于Wireshark格式打印数据包的函数(位置然后逐字节)
我查阅了他们的代码,发现他们使用的树对我的任务来说太复杂了。我也可以从头开始编写我自己的版本,但我不想重新发明轮子,所以我想知道是否有一些我可以使用的代码。我可以使用的库有什么建议吗?
*我的数据在无符号整数缓冲区中。
0000 01 02 ff 45 a3 00 90 00 00 00 00 00 00
0010 00 00 00 00 00 00 00 00 00 00 00 00 00
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 ... etc
谢谢!
我怀疑libC中是否存在这样的特定功能,但系统相当简单:
for (unsigned k = 0; k < len; k++)
{
if (k % 0x10 == 0)
printf("\n%04x", k);
if (k % 0x4 == 0)
printf(" ");
printf(" %02x", buffer[k] & 0xff);
}
将第一个模数替换为行长,将第二个模数替换为字长就可以了(当然,尽量使一个是另一个的倍数)
编辑:
我刚刚注意到您提到您拥有的数据位于无符号整数缓冲区中,对于这部分,您必须将其转换为无符号字符缓冲区。
当然,您可以使用带位移位的无符号缓冲区和每个循环打印四次来完成此操作,但这确实会在不必要的地方产生繁琐的代码