gpt4 book ai didi

C: 将接收到的 Winsock 数据包保存为十六进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:00 24 4
gpt4 key购买 nike

我需要做大多数数据包监控程序(Wireshark、tcpdump 等)所做的事情。当通过 Winsock 接收到数据时,我只需要将数据包转换为十六进制表示形式并将其保存到文件中。

数据只是一个简单的字符数组。

我尝试了很多类似 sprintf 的方法,但都没有成功。我也不想使用 itoa,因为它不是我所学的标准 C。

示例:

如果数据包包含“test”,那么它应该作为“74 65 73 74”转储到文件中。

我可以做所有的文件处理工作,而且 Winsock 代码可以正常工作,我想我只需要编写一个函数来将 char 数组转换为十六进制表示,但我似乎做不到。

最佳答案

也许您应该展示您尝试过的方法,因为 printf() 及其变体是迄今为止最简单的解决方案。

int emit_hex( FILE* file, const char* data, size_t len )
{
int length = 0 ;
size_t i ;

for( i = 0; i < len; i++ )
{
length += fprintf( file, "%2.2X", (unsigned)pkt[i] ) ;
if( i < len - 1)
{
length += fprintf( " " ) ;
}
}

return length ;
}

关于C: 将接收到的 Winsock 数据包保存为十六进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com