carma2002 发表于 2013-1-26 12:29:40

组织机构号 校验算法

int    check_zzjgm(char *in_data){    intright[] = {3, 7, 9, 10, 5, 8, 4, 2};    intdwTmp   = 0;    inti       = 0;    intsum   = 0;    intindex   = 0;    char C9      = 0;    if(9 != strlen(in_data) && 10 != strlen(in_data))    {      return -1;    }    for(i=0; i<8; i++)    {      if('A' <= in_data && 'Z' >= in_data)      {            dwTmp = (in_data - 'A' + 10) * right; /* A=10 B=11 ... Z=35 */      }      else if('0' <= in_data && '9' >= in_data)      {            dwTmp = (in_data - '0') * right;      }      else      {            return -1;      }      sum += dwTmp;    }    switch(index = 11 - sum % 11)    {    case 10: C9 = 'X'; break;    case 11: C9 = '0'; break;    default: C9 = '0' + index; break;      }    /* printf("in_data=%s C9=%c\n", in_data, C9); */    return (C9 != in_data[ strlen(in_data) - 1]) ? -1 : 0;}
页: [1]
查看完整版本: 组织机构号 校验算法