您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 正在做bittorrent文件解析器,遇到一个问题

正在做bittorrent文件解析器,遇到一个问题

来源:网络整理     时间:2016/8/3 6:23:13     关键词:

关于网友提出的“ 正在做bittorrent文件解析器,遇到一个问题”问题疑问,本网通过在网上对“ 正在做bittorrent文件解析器,遇到一个问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 正在做bittorrent文件解析器,遇到一个问题
描述:

关于bittorrent文件的协议都知道了,也实现了解析string ,int ,list, dict的方法,并能成功解析,可是bittorrent文件中有一个字段是pieces,协议说这个字段的意思是:一个长度为20的整数倍的字符串。它将再被分隔为20字节长的字符串,每个子串都是相应片断的hash值。
问题来了.如  6:pieces22560:?S?S}煸粡mb剉渋......
根据上面的字串解析得到pieces的长度为22560,也就是说从后面取出长度为22560的串就是hash过的值,可是后面到文件结尾也没有这么多字符了.
是不是22560这个值还要进行一下计算才能使用.请做过的朋友指点一下.


解决方案1:

我是想好好回答,我帮你分析,你却搞一句"再错也不会错那儿",你说我怎么想,老实说我先不会考虑到你用错fread了

解决方案2:

读取没有错吧,只是内容中存在 '\0'
而通过控制台输出时遇到'\0'就当作字符串结束了
后面的自然看不到,其实数据还是在的

解决方案3:

要直接看内存,另外通过fread返回值来看看具体读取到的长度
FILE *fp;
fp=fopen(filepath,"rb");
char sk[200000]={0};
int len = fread(sk,1,200000,fp); //这行改成这个,看看len是多少
fclose(fp);

解决方案4:

另外对于你的代码,呵呵,问题在于不要用strlen来获取你读到的内容长度,因为这个函数是通过\0来判断结尾的,长度应该从fread的返回值来获得
我上面说过了啊,那个所谓的空心方块就是\0

解决方案5:

用fread(s,sizeof(char),22560,fp)来读,返回值就是读到的长度了
没解析过,呵呵


以上介绍了“ 正在做bittorrent文件解析器,遇到一个问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3085713.html

相关图片

相关文章