📄 ewsd00.bak
字号:
//EWSD Exchange bill convert Programe 格式转换程序
//Write by Sunzhengxin @2002-07-04
//conveter Bin file to text file 转换二进制文件到文本文件
//source file : 0000002.BIN
#define MARK_REC 0x84
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <io.h>
struct BillTime{
int year;
int month;
int day;
int hour;
int min;
int sec;
long int leng;
char flag;
};
struct TrunkGroup{
char incomtg[10];
int itno;
char iflag;
char outgotg[10];
int otno;
char oflag;
};
struct SpecData{
char SpecData[32];
char flag;
};
struct ConnectBillCell{
int CBC;
char flag;
};
struct ServiceQuarlityData{
int resion;
int tt;
char flag;
};
struct BeforeAnaswerTime{
int tone;
int answ;
char flag;
};
struct A_class{
int leng;
char A_No[40];
int a_class;
char flag;
};
struct ConnectID{
long cid;
char flag;
};
struct B_Number{
int leng;
char B_No[40];
char flag;
};
struct RecordFlag{
char f12;
char f14;
char f18;
char f24;
char f25;
char f33;
char f37;
char f38;
};
struct RecordTypeAndState{
int type;
int state;
};
void _szx_disp(void);
void Mark_H64(unsigned char *,int *,struct BillTime *); //YYMMDDHHMMSS & total_Seconds
void Mark_H69(unsigned char *,int *,struct TrunkGroup *); //InComming_Trunk
void Mark_H6a(unsigned char *,int *,struct TrunkGroup *); //OutGoing_Trunk
void Mark_H75(unsigned char *,int *,struct SpecData *); //Special_Data
void Mark_H67(unsigned char *,int *,struct ConnectBillCell *); //Connect Billing Cell
void Mark_H82(unsigned char *,int *,struct ServiceQuarlityData *); //Service Quarlity Data
void Mark_H86(unsigned char *,int *,struct BeforeAnaswerTime *); //Before Anaswer time
void Mark_H8e(unsigned char *,int *,struct A_class *); //A_Class
void Mark_H6e(unsigned char *,int *,struct ConnectID *); //Connect ID
void Mark_Ha8(unsigned char *,int *,struct B_Number *); //B_Number
main(int argc,char *argv[])
{
FILE *fi,*fo;
struct BillTime BillT;
struct A_class Acl;
struct B_Number Bno;
struct TrunkGroup Tkg;
struct SpecData SpecD;
struct ConnectBillCell CBC;
struct ServiceQuarlityData SQD;
struct BeforeAnaswerTime BeAT;
struct ConnectID ConnID;
struct RecordFlag Flag;
struct RecordTypeAndState RecTS;
unsigned char RecBuffer[512];
long ptr_BillCur;
int ptr_BuffCur;
int Rec_length;
int Rec_Mark;
char Rec_flag,Rec_type,Pack_mark;
char filename[20],c;
int i,j,m,n;
fi=fopen("00000002","rb");
fo=fopen("BILL.TXT","wt");
ptr_BuffCur=0;
fseek(fi,0,SEEK_SET); fseek(fo,0,SEEK_SET);
//c=0x84;
Rec_Mark=0;
BillT.flag=0;
Tkg.iflag=0;
Tkg.oflag=0;
SpecD.flag=0;
CBC.flag=0;
SQD.flag=0;
BeAT.flag=0;
Acl.flag=0;
ConnID.flag=0;
Bno.flag=0;
while(!(feof(fi))){
fread(RecBuffer,512,1,fi); //Get Data to Buffer
for (ptr_BuffCur;ptr_BuffCur<512;ptr_BuffCur++){
if((RecBuffer[ptr_BuffCur]==0x84)&&(!Rec_Mark)){
Rec_Mark=1;
i=ptr_BuffCur;
Rec_length=(int)RecBuffer[ptr_BuffCur+1];
Flag.f12=(RecBuffer[ptr_BuffCur+3]&0x02)>>1;
Flag.f14=(RecBuffer[ptr_BuffCur+3]&0x08)>>3;
Flag.f18=(RecBuffer[ptr_BuffCur+3]&0x80)>>7;
Flag.f24=(RecBuffer[ptr_BuffCur+4]&0x08)>>3;
Flag.f25=(RecBuffer[ptr_BuffCur+4]&0x10)>>4;
Flag.f33=(RecBuffer[ptr_BuffCur+5]&0x04)>>2;
Flag.f37=(RecBuffer[ptr_BuffCur+5]&0x40)>>6;
Flag.f38=(RecBuffer[ptr_BuffCur+5]&0x80)>>7;
RecTS.type=(int)(RecBuffer[ptr_BuffCur+6]&0xf0);
RecTS.state=(int)(RecBuffer[ptr_BuffCur+6]&0x0f);
// Rec_flag=(int)RecBuffer[ptr_BuffCur+3];
// Rec_type=RecBuffer[ptr_BuffCur+6];
// Pack_mark=RecBuffer[ptr_BuffCur+8];
ptr_BuffCur+=8;
for(ptr_BuffCur;ptr_BuffCur<Rec_length+i;ptr_BuffCur++){
switch (RecBuffer[ptr_BuffCur]){
case 0x64: //YYMMDDHHMMSS & total_Seconds
Mark_H64(&RecBuffer[0],&ptr_BuffCur,&BillT);
break;
case 0x69: //InComming Trunk
Mark_H69(&RecBuffer[0],&ptr_BuffCur,&Tkg);
break;
case 0x6a: //OutGoing Trunk
Mark_H6a(&RecBuffer[0],&ptr_BuffCur,&Tkg);
break;
case 0x75: //Special Data
Mark_H75(&RecBuffer[0],&ptr_BuffCur,&SpecD);
break;
case 0x67: //Connect Billing Cell
Mark_H67(&RecBuffer[0],&ptr_BuffCur,&CBC);
break;
case 0x82: //Service Quarlity Data
Mark_H82(&RecBuffer[0],&ptr_BuffCur,&SQD);
break;
case 0x86: //Before Anaswer time
Mark_H86(&RecBuffer[0],&ptr_BuffCur,&BeAT);
break;
case 0x8e: //A Class
Mark_H8e(&RecBuffer[0],&ptr_BuffCur,&Acl);
break;
case 0x6e: //Connect ID
Mark_H6e(&RecBuffer[0],&ptr_BuffCur,&ConnID);
break;
case 0xa8: //B Number
Mark_Ha8(&RecBuffer[0],&ptr_BuffCur,&Bno);
break;
} //End of switch
} //End of "for" Packet scan
if (Rec_Mark) { //Output Record data
printf("%02i-%02i-%02i %02i:%02i:%02i %8i",BillT.year,BillT.month,
BillT.day,BillT.hour,BillT.min,BillT.sec,BillT.leng);
printf("\t%s %s %s\n",Tkg.outgotg,Acl.A_No,Bno.B_No);
fprintf(fo,"%02i-%02i-%02i %02i:%02i:%02i %8i",BillT.year,BillT.month,
BillT.day,BillT.hour,BillT.min,BillT.sec,BillT.leng);
fprintf(fo,"\t%s %s %s\n",Tkg.outgotg,Acl.A_No,Bno.B_No);
Rec_Mark=0;
//m=ftell(fi);
ptr_BuffCur-512;
fseek(fi,ptr_BuffCur-512,SEEK_CUR);
if(!fread(RecBuffer,512,1,fi))
break;
//m=ftell(fi);
ptr_BuffCur=-1;
i=0;
//continue;
} //End of "if" Record data output
} //End of "if" Buffer Record scan
if(ptr_BuffCur>50){ //Cat Zero data
//m=ftell(fi);
//j=ptr_BuffCur-512;
fseek(fi,ptr_BuffCur-512,SEEK_CUR);
if(!fread(RecBuffer,512,1,fi))
break;
//m=ftell(fi);
ptr_BuffCur=-1;
i=0;
continue;
}
} //Eof "for" Buffer Rec.
//printf("%i\t\n",ptr_BuffCur);
};
fclose(fi);
fclose(fo);
return(0);
}
void _szx_disp(void)
{
printf("Bill Convert Program. Write by Sun Zheng-xin@2002.");
printf("\n\rConvert Tape file to Format Textfile .");
printf("\n\r!!!For EWSD Bill Only!!!");
printf("\r\nFormat:\r\n\tEWSDB2T.EXE [BinBillFile] [outfile]");
printf("\r\r");
printf("\r\n\nExample:EWSDB2T.EXE Bill225.BIN OutBill225.TXT");
printf("\r\n\n\n");
}
//YYMMDDHHMMSS & total_Seconds
void Mark_H64(unsigned char *Buff,int *ptr,struct BillTime *pBillT)
{
pBillT->year = Buff[*ptr+1];
pBillT->month = Buff[*ptr+2];
pBillT->day = Buff[*ptr+3];
pBillT->hour = Buff[*ptr+4];
pBillT->min = Buff[*ptr+5];
pBillT->sec = Buff[*ptr+6];
pBillT->leng = Buff[*ptr+8]+Buff[*ptr+9]*256+Buff[*ptr+10]*65536;
pBillT->flag = 1;
*ptr+=10;
}
//InComming_Trunk
void Mark_H69(unsigned char *Buff,int *ptr,struct TrunkGroup *pTkg)
{
int n;
for(n=0;n<6;n++)
pTkg->incomtg[n]=Buff[*ptr+n+1];
pTkg->incomtg[n]=0x00;
pTkg->iflag=1;
*ptr+=8;
}
//OutGoing_Trunk
void Mark_H6a(unsigned char *Buff,int *ptr,struct TrunkGroup *pTkg)
{
int n;
for(n=0;n<6;n++)
pTkg->outgotg[n]=Buff[*ptr+n+1];
pTkg->outgotg[n]=0x00;
pTkg->oflag=1;
*ptr+=8;
}
//Special_Data
void Mark_H75(unsigned char *Buff,int *ptr,struct SpecData *pSpecD)
{
pSpecD->flag=1;
*ptr+=32;
}
//Connect Billing Cell
void Mark_H67(unsigned char *Buff,int *ptr,struct ConnectBillCell *pCBC)
{
pCBC->flag=1;
*ptr+=3;
}
//Service Quarlity Data
void Mark_H82(unsigned char *Buff,int *ptr,struct ServiceQuarlityData *pSQD)
{
pSQD->flag=1;
*ptr+=4;
}
//Before Anaswer time
void Mark_H86(unsigned char *Buff,int *ptr,struct BeforeAnaswerTime *pBeAT)
{
pBeAT->flag=1;
*ptr+=5;
}
//A_Class
void Mark_H8e(unsigned char *Buff,int *ptr,struct A_class *pAcl)
{
int n;
pAcl->leng=(int)Buff[*ptr+1];
for(n=0;n<(pAcl->leng-5);n++){
pAcl->A_No[2*n]=((Buff[*ptr+5+n]&0xf0)/16)+0x30;
pAcl->A_No[2*n+1]=(Buff[*ptr+5+n]&0x0f)+0x30;
}
pAcl->A_No[2*n]=0x00;
pAcl->flag=1;
*ptr+=pAcl->leng-1;
}
//Connect ID
void Mark_H6e(unsigned char *Buff,int *ptr,struct ConnectID *pCID)
{
pCID->flag=1;
*ptr+=5;
}
//B_Number
void Mark_Ha8(unsigned char *Buff,int *ptr,struct B_Number *pBno)
{
int n;
pBno->leng=(int)Buff[*ptr+1];
for(n=0;n<(pBno->leng-5);n++){
pBno->B_No[2*n]=((Buff[*ptr+5+n]&0xf0)/16)+0x30;
pBno->B_No[2*n+1]=(Buff[*ptr+5+n]&0x0f)+0x30;
}
pBno->B_No[2*n]=0x00;
pBno->flag=1;
*ptr+=pBno->leng-1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -