⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 custvercode.c

📁 UNIX/LINUX平台下面SMS网管原代码
💻 C
字号:
/* * FILE		: CustVerCode.c * PROVIDED BY	: branch ShanXi of CCB * DESCRIPTION	: 根据前10位生成第11位,即校验位 */#include <stdio.h>#include <math.h>#include <ctype.h>#include <stdlib.h>#include <string.h>#define SPLIT		"#"	/* 补充字符*/#define CONST_MOD	10	/*模常量*/int  ig_CharLen;char cg_Buffer[1024],cg_Buffer1[1024];/* Global function */char PUB_ProCifCusNoVer(char *epcBuf);/* Local function */static void Trim_SupChar();static int Do_Comp_Val(int n);static char CustomNo_Ver_Pro();/*字符值对照*/static int char_map[][10]={        {         '0','1','2','3','4','5','6','7','8','9'        },        {          0,1,2,3,4,5,6,7,8,9        }};/*   函数说明:Trim_SupChar(对客户号中的补充字符进行删除)   输入参数:客户号   输出参数:   描述:*/static void Trim_SupChar(){	char cp_TmpBuf[1024];	char *pc_TmpBuf;	int ip_Loc;		memset(cp_TmpBuf,0,sizeof(cp_TmpBuf));	pc_TmpBuf=strstr(cg_Buffer,SPLIT);		if( pc_TmpBuf != NULL  ){		ip_Loc=pc_TmpBuf-&cg_Buffer[0];		memcpy(cp_TmpBuf,cg_Buffer,ip_Loc);		cp_TmpBuf[ip_Loc]='\0';		strcat(cp_TmpBuf,&cg_Buffer[ip_Loc+1]);				printf("Verify String is [%s]\n",cp_TmpBuf);		strcpy(cg_Buffer1,cp_TmpBuf);	}}/*   函数说明: 递归求模   输入参数: 客户号的长度   输出参数: 模值   描述:*/static int Do_Comp_Val(int n){        int ip_RetVal;        int ip_TmpVal,ip_TmpVal1;        int j;        if(n== 0)       return CONST_MOD;        ip_TmpVal=Do_Comp_Val(n-1);        for(j=0;j<10;j++)                if( cg_Buffer1[n-1] == char_map[0][j] )		{                        ip_TmpVal1=char_map[1][j];                        break;                }        /*        if( cg_Buffer[n-1] > 10 ){                ip_TmpVal1=cg_Buffer[n-1]-55;        }        */        ip_TmpVal+=ip_TmpVal1;        ip_TmpVal=ip_TmpVal%10;        if(ip_TmpVal == 0 )	{                ip_TmpVal=10;        }		ip_TmpVal*=2;        ip_TmpVal=ip_TmpVal%37;        ip_RetVal=ip_TmpVal;        return ip_RetVal;}/*   函数说明: 客户号校验位的产生   输入参数: 客户号   输出参数: 校验位(整数)   描述:*/static char CustomNo_Ver_Pro(){	int ip_RetVal,n,m,j;	int ip_TmpVal;	char cp_RetChar;	ig_CharLen=strlen(cg_Buffer1);	n=ig_CharLen;	ip_RetVal=Do_Comp_Val(n);		m=0;	while(1)	{		ip_TmpVal=CONST_MOD*m+1-ip_RetVal;			if( ip_TmpVal > 0 )		{			ip_RetVal=ip_TmpVal;			break; 		}		m+=1;	}		        for(j=0;j<10;j++)	{                if( ip_RetVal == char_map[1][j] )		{                        cp_RetChar=char_map[0][j];                        break;		}	}		return cp_RetChar;		}char PUB_ProCifCusNoVer(char *epcBuf){	int  ip_CustomNo_Ver;	char cp_RetChar;	memset(cg_Buffer,0,sizeof(cg_Buffer));	memset(cg_Buffer1,0,sizeof(cg_Buffer1));	strcpy(cg_Buffer,epcBuf);	Trim_SupChar();	strcpy(cg_Buffer1,cg_Buffer);	cp_RetChar=CustomNo_Ver_Pro();		return(cp_RetChar);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -