`
love19820823
  • 浏览: 933921 次
文章分类
社区版块
存档分类
最新评论

一个简单的文件处理--16进制数据统计分析

 
阅读更多

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const char * str1="offset_lr < offset: ";
const char * str2="offset_lr > offset: ";
#define BUFFERSIZE 128
char StrBuffer[BUFFERSIZE];
#define SIZE 49
int SMALL_COUNT[SIZE];
int LARGE_COUNT[SIZE];
double average=0.0;
double SMALL_SUM=0;
double LARGE_SUM=0;
int totalCount=0;
int strSize=20;
int findAndCount(const char * searchStr,int arr[SIZE] ,bool Large)
{
char * str;
char ch;
int tmp=0;
FILE * f=fopen("test.txt","rb");
if(f==NULL)
{
return (-1);
}
else
{
while(fread(StrBuffer,1,BUFFERSIZE,f)==BUFFERSIZE)
{
str=StrBuffer;
if ((str=strstr(str,searchStr))!=NULL)
{
bool exitFlag=false;
for(int i=2;i<8;i++)
{
ch=*(str+strSize+i);
printf("%c",ch);
if(ch=='/0')
{
exitFlag=true;
break;
}

}
if(exitFlag)
continue;
ch=*(str+strSize+8);
if(ch=='/0')
continue;
printf("%c",ch);
if(ch<='9')
tmp=(ch-'0')*16;
else
tmp=(ch-'A'+10)*16;
ch=*(str+strSize+9);
if(ch=='/0')
continue;
printf("%c",ch);
if(ch<='9')
tmp+=(ch-'0');
else
tmp+=(ch-'A'+10);
if(tmp<SIZE)
{ arr[tmp]++;
printf("/n%d",arr[tmp]);
}
printf("/n");
}
}
for(int i=0;i<SIZE;i++)
{
totalCount+=arr[i];
if(Large)
LARGE_SUM+=(arr[i]*i);
else
SMALL_SUM+=(-arr[i])*i;
printf("%d:%d/n",i,arr[i]);
}
fclose(f);
}

}
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=0;i<SIZE;i++)
{
SMALL_COUNT[i]=0;
LARGE_COUNT[i]=0;
}
printf("%d/n",strSize);
findAndCount(str2,LARGE_COUNT,true);
printf("LARGE_SUM:%lf,SMALL_SUM:%lf/n",LARGE_SUM,SMALL_SUM);
system("pause");
findAndCount(str1,SMALL_COUNT,false);
printf("LARGE_SUM:%lf,SMALL_SUM:%lf/n",LARGE_SUM,SMALL_SUM);
average=(LARGE_SUM+SMALL_SUM)/totalCount;
printf("Total Count:%d/nAverage:%lf/n",totalCount,average);
system("pause");
return 0;
}

分享到:
评论

相关推荐

    16 进制编辑工具 Hex Editor Neo Ultimate Edition 6.52.00 + x64.zip

    Hex Editor Neo Ultimate 可以查看,修改,分析您的十六进制和二进制数据文件,编辑,与其他应用程序通过剪贴板,插入新的数据,交换数据和删除现有数据,以及执行其他编辑操作。只用鼠标点击补丁,操纵你的EXE,DLL...

    Advanced Bash-Scripting Guide <>

    对于二进制文件的一个grep 替换 10-8. 列出系统上的所有用户 10-9. 在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名保存到一个文件中 10-12. 一个C 风格的for ...

    Fiddler抓包工具

    对所选中的这些会话的一个统计信息,这里可以选择一条或者多条,在右侧会给出相应的统计信息。 点击ShowChart会以图表的形式显示各种文件的比例 2、Inspectors 对某一条对话的Response和Request的详细介绍 i)...

    Linux高级bash编程

    "Including"一个数据文件 11-21. 一个没什么用的,source自身的脚本 11-22. exec的效果 11-23. 一个exec自身的脚本 11-24. 在继续处理之前,等待一个进程的结束 11-25. 一个结束自身的脚本. 12-1. 使用ls命令来创建一...

    VesselNetworkAnalyzer:一种从船只网络文件及其各自的二进制掩码量中提取与统计相关的特征的软件工具

    一种软件工具,可从船只网络文件及其各自的二进制掩码量中提取出统计上相关的特征。 它是《出版物“整个产后和成年小鼠大脑中三维血管网络体系的分层成像和计算分析”中使用的处理管线的一部分。 它收集有关分叉,...

    软件病毒特征码定位软件multiCCL

    另一个简单的做法是:先手动在样本所在目录下建一个名为  output 的子目录,然后在选择目录的对话框点 “取消”,这样输出文件就都放到这个output 目录下了。 3. 设置保护片段时,如果所保护的片段本身是...

    multiCCL_f

    另一个简单的做法是:先手动在样本所在目录下建一个名为  output 的子目录,然后在选择目录的对话框点 “取消”,这样输出文件就都放到这个output 目录下了。 3. 设置保护片段时,如果所保护的片段本身是...

    入门学习Linux常用必会60个命令实例详解doc/txt

    umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir 3.使用说明 umount 命令是mount命令...

    JAVA上百实例源码以及开源项目源代码

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    c程序设计习题参考(谭浩强三版)习题参考解答

    11.3编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。 95 11.4在上题的基础上,编写一个函数input,...

    C++课程题目及其答案

    1简单事务处理:设计模拟一个书店的销售账目。程序能够添加、修改书目,根据进货和销售数目更新库存数。(或类似的学生学籍管理、仓库物品管理、设备管理等,人选一个) 2 排序算法:设计四种及以上的排序算法,如...

    JAVA上百实例源码以及开源项目

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间 67 实例054 手动设置系统日期时间 69 实例055 根据生日自动计算员工年龄 70 实例056 根据年份判断十二生肖 71 ...

    数据结构(C++)有关练习题

    e. 如有可能,请建立一个存储商品名称和数量的文本文件,并为二叉搜索树建立一个成员函数SetupInventory(),用于从该文本文件中读取库存商品的数据, 实验报告要求: 1、 按要求记录下二叉搜索树的完整实验...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

Global site tag (gtag.js) - Google Analytics