亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? switch.c

?? s1240 74字節(jié)話單二進(jìn)制格式轉(zhuǎn)換程序,程序結(jié)構(gòu)可用語其他交換機(jī)話單格式轉(zhuǎn)換
?? C
字號:
#include <stdio.h>
#include <string.h>

#define SUCCESS	1
#define ERROR	-1

/* 聲明公共變量 */
struct Stru_Source_Record
{
	unsigned char Info1[5];		/* 其他信息								*/
	unsigned char Number[15];	/* 主叫、被叫號碼,被叫開始位置不固定 	*/
	unsigned char Year;			/* 年									*/
	unsigned char Month;		/* 月									*/
	unsigned char Day;			/* 日									*/
	unsigned char Hour;			/* 時(shí)									*/
	unsigned char Minute;		/* 分									*/
	unsigned char Second;		/* 秒									*/
	unsigned char TimeLen[4];	/* 時(shí)長									*/
	unsigned char Info2[8];		/* 其他信息								*/
};

struct Stru_Target_Record
{
	char Calling_Nbr[15];
	char Sep1;
	char Called_Nbr[20];
	char Sep2;
	char Year[4];
	char Sep3;
	char Month[2];
	char Sep4;
	char Day[2];
	char Sep5;
	char Hour[2];
	char Sep6;
	char Minute[2];
	char Sep7;
	char Second[2];
	char Sep8;
	char TimeLen[6];
	char Sep9[2];
};
	
FILE *fp_SourceFile,*fp_CallFile,*fp_TollFile;

/* 函數(shù)聲明 */
int	 OpenFile(void);	/* 打開所有文件	*/
void CloseFile(void);	/*關(guān)閉所有文件	*/
void ShiftData(void);	/*二進(jìn)制轉(zhuǎn)文本	*/
void InitTargetRecord(struct Stru_Target_Record *Target_Record);					/* 初始化目標(biāo)結(jié)構(gòu)	*/
void AnalyzeData(struct Stru_Source_Record *SourceRecord,
		struct Stru_Target_Record *TargetRecord);									/* 解析數(shù)據(jù),并寫入目標(biāo)結(jié)構(gòu) */
int  AnalyzeNumber(unsigned char *InStr,int SourcePos,
		int SourceLen,char *OutStr,int TargetPos);									/* 解析主叫、被叫號碼 */
void AnalyzeDateTime(unsigned char InChar,char *OutStr,int Pos);					/* 解析日期、時(shí)間 */

void main(void)
{
	if  (OpenFile() == SUCCESS)
	{
		ShiftData();
		CloseFile();
	}
	return;
}

int OpenFile(void)
{
	/* 本函數(shù)打開所需處理的所有文件 */
	int  li_RetVal = SUCCESS;
	char lc_FileName[50] = "dch.dat";
	char lc_CallName[50] = "dch_call.txt";
	char lc_TollName[50] = "dch_toll.txt";
	
	/* Open source file */
	fp_SourceFile = fopen(lc_FileName,"rb");
	if  (!fp_SourceFile)
	{
		printf("%s cannot open!\n");
		li_RetVal = ERROR;
	}
	else
	{
		/* Open target file*/
		fp_CallFile = fopen(lc_CallName,"w");
		fp_TollFile = fopen(lc_TollName,"w");
		if  (!fp_CallFile || !fp_TollFile)
		{
			printf("Target file can not open!\n");
			CloseFile();
			li_RetVal = ERROR;
		}
	}
	
	return (li_RetVal);
}	

void CloseFile(void)
{
	fclose(fp_SourceFile);
	fclose(fp_CallFile);
	fclose(fp_TollFile);
	return;
}

void ShiftData(void)
{
	/* 本函數(shù)進(jìn)行文件的二進(jìn)制轉(zhuǎn)換 */
	/* 二進(jìn)制格式說明:一個塊為2048個字節(jié),塊頭為10個字節(jié),塊尾為24個字節(jié),
	   每個塊內(nèi)共有53條記錄,每條記錄38個字節(jié),有效記錄開始標(biāo)志為0XBB */
	int		li_TotalRecordCount = 0;	/* 文件總記錄數(shù) */
	int		li_BlockRecordCount = 0;	/* 塊內(nèi)記錄數(shù)	*/
	int		li_TotalBlockCount = 0;		/* 總塊數(shù)		*/
	int		li_ValidRecordCount = 0;	/* 有效記錄數(shù)	*/
	
	struct  Stru_Source_Record ls_SourceRecord;
	struct  Stru_Target_Record ls_TargetRecord;
	
	/* 跳過10個字節(jié)的塊頭 */
	fseek(fp_SourceFile,10,SEEK_CUR);

	while(!feof(fp_SourceFile))
	{

		/* 顯示處理信息 */
		if  (li_TotalRecordCount % 500 == 0 && li_TotalRecordCount > 0)
		{
			printf("處理記錄數(shù):%8d    有效記錄數(shù):%8d    數(shù)據(jù)塊數(shù):%8d\n",
				li_TotalRecordCount,li_ValidRecordCount,li_TotalBlockCount);
		}

		/* 如果到塊尾,則跳過24個字節(jié)塊尾和10字節(jié)塊頭 */
		if  (li_BlockRecordCount == 53)
		{
			li_BlockRecordCount = 0;			/* 塊內(nèi)記錄統(tǒng)計(jì)變量清0 	*/
			li_TotalBlockCount++;				/* 統(tǒng)計(jì)塊數(shù) 			*/
			fseek(fp_SourceFile,24+10,SEEK_CUR);
			if  (feof(fp_SourceFile))				/* 文件結(jié)束			*/
			{
				break;
			}
		}

		/* 從源文件中讀入一條記錄 */
		fread(&ls_SourceRecord,sizeof(struct Stru_Source_Record),1,fp_SourceFile);
		
		/* 如果記錄標(biāo)志不為0XBB,則無效 */
		if  (ls_SourceRecord.Info1[0] != 0xBB)
		{
			li_TotalRecordCount++;
			li_BlockRecordCount++;
			continue;
		}
		
		/* 目標(biāo)記錄初始化 */
		InitTargetRecord(&ls_TargetRecord);

		/* 解析數(shù)據(jù),并寫入目標(biāo)結(jié)構(gòu) */
		AnalyzeData(&ls_SourceRecord,&ls_TargetRecord);
		
		/* 寫入目標(biāo)文件 */
		if  (ls_TargetRecord.Called_Nbr[0] == '0'
			|| strncmp(ls_TargetRecord.Called_Nbr,"17909",5) == 0)
		{
			fprintf(fp_TollFile,"%s",ls_TargetRecord.Calling_Nbr);
		}
		else
		{
			fprintf(fp_CallFile,"%s",ls_TargetRecord.Calling_Nbr);
		}
		
		/* 計(jì)數(shù)變量累加 */
		li_TotalRecordCount++;
		li_BlockRecordCount++;
		li_ValidRecordCount++;
	}

	printf("處理記錄數(shù):%8d    有效記錄數(shù):%8d    數(shù)據(jù)塊數(shù):%8d\n",
		li_TotalRecordCount,li_ValidRecordCount,li_TotalBlockCount);

	return;
}

void InitTargetRecord(struct Stru_Target_Record *Target_Record)
{
	/* 本函數(shù)對目標(biāo)串進(jìn)行初始化 */
	memset(Target_Record->Calling_Nbr,' ',sizeof(struct Stru_Target_Record));
	
	/* 字段間以分號分隔 */
	Target_Record->Sep1 = ',';
	Target_Record->Sep2 = ',';
	Target_Record->Sep5 = ',';
	Target_Record->Sep8 = ',';
	
	/* 年月日之間以'-'分隔 */
	memcpy(Target_Record->Year,"20",2);
	Target_Record->Sep3 = '-';
	Target_Record->Sep4 = '-';
	
	/* 時(shí)分秒之間以':'分隔 */
	Target_Record->Sep6 = ':';
	Target_Record->Sep7 = ':';
	
	/* 結(jié)尾加回車 */
	Target_Record->Sep9[0] = '\n';
	Target_Record->Sep9[1] = 0x00;
}	

void AnalyzeData(struct Stru_Source_Record *SourceRecord,struct Stru_Target_Record *TargetRecord)
{
	/* 本函數(shù)解析源二進(jìn)制數(shù)據(jù),并寫入目標(biāo)結(jié)構(gòu) */
	int		li_SourcePos=0;
	int		li_TargetPos=0;
	char	lc_Buffer[20];
	long	ll_TimeLen;
	
	int		li_CallingFlag = 1;		/* 主叫號碼標(biāo)志,1表示主叫,0表示被叫			*/
	int		li_NumberOverFlag  = 0;	/* 解析主被叫號碼是否結(jié)束標(biāo)志,0沒結(jié)束,1結(jié)束	*/
	int		li_Tmp;
	
	li_TargetPos = 0;
	/* 解析主叫號碼 */
	li_SourcePos = AnalyzeNumber(SourceRecord->Number,li_SourcePos,sizeof(SourceRecord->Number),
		TargetRecord->Calling_Nbr,li_TargetPos);
	
	/* 判斷主叫、被叫之間的分隔符 */
	for ( ; li_SourcePos < sizeof(SourceRecord->Number); li_SourcePos++)
	{
		sprintf(lc_Buffer,"%2x",SourceRecord->Number[li_SourcePos]);
		if  (lc_Buffer[0] == ' ')
		{	/* 補(bǔ)上丟失的高位0 */
			lc_Buffer[0] = '0';
		}
		
		if  (lc_Buffer[0] >='0' && lc_Buffer[0] <= '9')
		{	/* 如果被叫號碼從高4位開始,則退出 */
			break;
		}
		
		if  (lc_Buffer[1] >= '0' && lc_Buffer[1] <= '9')
		{	/* 如果被叫號碼從低4位開始,則先寫入被叫的首位 */
			TargetRecord->Called_Nbr[0] = lc_Buffer[1];
			li_SourcePos++;		/* 源字串位置指向下一個字節(jié) */
			li_TargetPos = 1;	/* 目標(biāo)下標(biāo)位置指向第二個字節(jié),即1 */
			break;
		}
	}
		
	/* 解析被叫號碼 */
	AnalyzeNumber(SourceRecord->Number,li_SourcePos,sizeof(SourceRecord->Number),
		TargetRecord->Called_Nbr,li_TargetPos);

	/* 解析日期、時(shí)間 */
	AnalyzeDateTime(SourceRecord->Year,  TargetRecord->Year,  2);
	AnalyzeDateTime(SourceRecord->Month, TargetRecord->Month, 0);
	AnalyzeDateTime(SourceRecord->Day,   TargetRecord->Day,   0);
	AnalyzeDateTime(SourceRecord->Hour,  TargetRecord->Hour,  0);
	AnalyzeDateTime(SourceRecord->Minute,TargetRecord->Minute,0);
	AnalyzeDateTime(SourceRecord->Second,TargetRecord->Second,0);
	
	/* 計(jì)算時(shí)長 */
	ll_TimeLen =  SourceRecord->TimeLen[0] * 16777216
				+ SourceRecord->TimeLen[1] * 65535
				+ SourceRecord->TimeLen[2] * 256
				+ SourceRecord->TimeLen[3];
	memset(lc_Buffer,0x00,sizeof(lc_Buffer));
	sprintf(lc_Buffer,"%d",ll_TimeLen);
	
	/* 將時(shí)長按右對齊傳入目標(biāo)結(jié)構(gòu)中 */
	li_SourcePos = strlen(lc_Buffer) - 1;
	li_TargetPos = 5;
	while(li_SourcePos>=0)
	{
		TargetRecord->TimeLen[li_TargetPos] = lc_Buffer[li_SourcePos];
		li_SourcePos--;
		li_TargetPos--;
	}
}	

int  AnalyzeNumber(unsigned char *InStr,int SourcePos,int SourceLen,char *OutStr,int TargetPos)
{
	/* 本函數(shù)解析主叫、被叫號碼,將結(jié)果寫入目標(biāo)串,返回結(jié)束的下標(biāo)位置。
		InStr:		二進(jìn)制15位主叫、被叫號碼
		SourcePos:	InStr的開始位置
		OutStr:	輸出結(jié)果字串,為主叫或被叫號碼
		TargetPos: OutStr的開始位置	*/
	int  li_NumberOverFlag = 0;
	int  li_Tmp;
	char lc_Buffer[100];

	for  ( ; SourcePos < SourceLen; SourcePos++ )
	{	
		/* 取出號碼字節(jié)的高4位和低4位,放到lc_Buffer的第0、1字節(jié)中 */
		sprintf(lc_Buffer,"%2x",InStr[SourcePos]);
		if  (lc_Buffer[0] == ' ')
		{	/* 補(bǔ)上丟失的高位0 */
			lc_Buffer[0] = '0';
		}
		
		for (li_Tmp = 0; li_Tmp < 2;li_Tmp++)
		{	/* 如果是數(shù)字則寫入到目標(biāo)串 */
			if  (lc_Buffer[li_Tmp] >= '0' && lc_Buffer[li_Tmp] <= '9')
			{
				OutStr[TargetPos] = lc_Buffer[li_Tmp];
				TargetPos++;
			}
			else
			{	/* 如果不是數(shù)字,則號碼結(jié)束 */
				li_NumberOverFlag = 1;
				break;
			}
		}
		if  (li_NumberOverFlag == 1)
		{
			break;
		}
	}
	
	return (SourcePos);
}
	
void AnalyzeDateTime(unsigned char InChar,char *OutStr,int Pos)		/* 解析日期、時(shí)間 */
{
	char lc_Buffer[10];
	
	sprintf(lc_Buffer,"%2x",InChar);
	if  (lc_Buffer[0] == ' ')
	{	/* 補(bǔ)上丟失的高位0 */
		lc_Buffer[0] = '0';
	}
	memcpy(OutStr+Pos,lc_Buffer,2);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久se这里有精品| 日本不卡一二三| 久久精品视频一区| 久久亚洲综合色| 26uuu亚洲| 久久在线观看免费| 国产免费观看久久| 国产精品人妖ts系列视频| 亚洲国产成人在线| 亚洲欧美色综合| 亚洲不卡在线观看| 久久国产尿小便嘘嘘| 激情综合五月婷婷| 国产寡妇亲子伦一区二区| 成人激情图片网| 日本韩国一区二区三区| 在线精品视频免费播放| 欧美一区二区三区四区视频| 制服丝袜日韩国产| 久久蜜桃av一区精品变态类天堂| 国产日韩视频一区二区三区| 中文字幕日本乱码精品影院| 一区av在线播放| 麻豆精品一区二区av白丝在线| 韩国av一区二区三区| 99re这里都是精品| 91精品国产乱码| 国产精品水嫩水嫩| 亚洲午夜精品网| 国产精品一区二区91| 91免费视频大全| 91精品国产手机| 国产精品视频线看| 石原莉奈在线亚洲二区| 国产精品一区二区在线看| 色香蕉久久蜜桃| 精品动漫一区二区三区在线观看| 国产精品国产三级国产三级人妇| 亚洲线精品一区二区三区八戒| 国产真实乱对白精彩久久| 91免费在线视频观看| 337p日本欧洲亚洲大胆精品| 夜夜嗨av一区二区三区网页| 国产一区二区视频在线| 欧洲亚洲国产日韩| 欧美国产精品一区二区| 日韩精品免费专区| 91看片淫黄大片一级在线观看| 日韩免费电影网站| 亚洲h在线观看| 99免费精品在线观看| 精品理论电影在线观看 | 久久免费美女视频| 性欧美疯狂xxxxbbbb| 成人免费毛片片v| 精品免费日韩av| 奇米影视7777精品一区二区| 91香蕉视频黄| 国产精品高潮呻吟久久| 国产一区二区三区黄视频 | 欧美激情一区二区| 久久丁香综合五月国产三级网站| 欧美吻胸吃奶大尺度电影| 亚洲欧洲成人精品av97| 成a人片亚洲日本久久| 久久午夜免费电影| 久久se精品一区精品二区| 日韩精品一区二区三区三区免费| 亚欧色一区w666天堂| 欧美日韩精品电影| 亚洲一区二区精品久久av| 91国偷自产一区二区三区成为亚洲经典 | 国产精品福利在线播放| 国产激情91久久精品导航| 国产亚洲自拍一区| 国产成人精品网址| 国产欧美一区二区精品久导航 | 久久久三级国产网站| 精品一区二区三区免费观看| 日韩免费观看高清完整版| 麻豆国产精品一区二区三区 | 国产亚洲午夜高清国产拍精品| 精品影视av免费| 久久一区二区三区四区| 国产精品一区二区果冻传媒| 国产精品免费人成网站| 北岛玲一区二区三区四区| 亚洲欧美一区二区三区国产精品| 在线亚洲一区二区| 天天影视涩香欲综合网| 精品国产网站在线观看| 成人免费va视频| 亚洲一级不卡视频| 日韩色视频在线观看| 国产一区二区三区四| 中文幕一区二区三区久久蜜桃| 99久久久无码国产精品| 日韩高清不卡一区二区| 久久麻豆一区二区| 欧美在线色视频| 美女在线一区二区| 国产精品国产三级国产有无不卡 | 日韩免费高清av| 国产成人无遮挡在线视频| 最近中文字幕一区二区三区| 欧美高清你懂得| 成人涩涩免费视频| 日韩精品一级中文字幕精品视频免费观看| 日韩一级高清毛片| 91亚洲精品久久久蜜桃| 精品在线亚洲视频| 中文字幕一区二区三区精华液 | 欧美精品黑人性xxxx| 国内精品伊人久久久久影院对白| 18成人在线观看| 日韩欧美一二三| 91蝌蚪porny| 国产99一区视频免费| 亚洲五码中文字幕| 中文字幕成人av| 在线综合亚洲欧美在线视频| 色综合久久中文字幕| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲视频资源在线| 久久久精品国产免大香伊| 欧美亚洲国产一区二区三区| www.日韩精品| 国产精品99久| 久久国产精品免费| 亚洲福中文字幕伊人影院| 国产精品久线在线观看| 久久久久久久久久久黄色| 911精品国产一区二区在线| 色哟哟一区二区在线观看| 成人一区二区在线观看| 国内精品伊人久久久久av一坑| 亚洲午夜久久久久中文字幕久| 综合分类小说区另类春色亚洲小说欧美| 精品国产91乱码一区二区三区| 欧美丰满嫩嫩电影| 欧美羞羞免费网站| 91久久久免费一区二区| 色综合婷婷久久| 欧美日韩你懂得| 99麻豆久久久国产精品免费| 日韩福利电影在线| 亚洲精品成人悠悠色影视| 欧美精选一区二区| 欧美性高清videossexo| 99re热这里只有精品视频| 成人午夜看片网址| 不卡欧美aaaaa| 成人av动漫在线| 91在线视频网址| 色综合激情五月| 91豆麻精品91久久久久久| 欧美天堂一区二区三区| 在线观看免费成人| 欧美私人免费视频| 欧美一区二区三区影视| 欧美成va人片在线观看| 久久久噜噜噜久久中文字幕色伊伊| 欧美mv和日韩mv国产网站| 国产欧美日韩一区二区三区在线观看| 久久久www成人免费无遮挡大片 | 国产在线播放一区| 国产美女在线观看一区| 国产91精品露脸国语对白| 99精品国产一区二区三区不卡| 99这里都是精品| 欧美色视频一区| 欧美一级一区二区| 久久久一区二区三区| 国产精品久久看| 亚洲亚洲精品在线观看| 久草热8精品视频在线观看| 国产精品影视在线| 日本韩国精品一区二区在线观看| 欧美日韩精品二区第二页| 亚洲精品在线免费播放| 国产精品黄色在线观看| 日韩极品在线观看| 国产成人免费视频精品含羞草妖精| av一本久道久久综合久久鬼色| 欧美在线视频日韩| 精品成人在线观看| 亚洲免费在线看| 奇米888四色在线精品| 高清在线观看日韩| 欧美久久婷婷综合色| 国产欧美一区二区精品婷婷 | 国内精品久久久久影院色| 96av麻豆蜜桃一区二区| 日韩视频国产视频| 一区二区三区 在线观看视频| 久久激情综合网| 欧美日韩激情一区| 中文字幕亚洲一区二区av在线| 午夜精品影院在线观看| 不卡在线观看av|