| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 906 人关注过本帖
标题:身份证最后一位的校验位公式中 check_number=Int((12-nSum % 11)%11)为什么 ...
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:10 
身份证最后一位的校验位公式中 check_number=Int((12-nSum % 11)%11)为什么要 12 去减
nSum= Val(Substr(cID,1,1)) * 7 ;
        + Val(Substr(cID,2,1)) * 9 ;
        + Val(Substr(cID,3,1)) * 10 ;
        + Val(Substr(cID,4,1)) * 5 ;
        + Val(Substr(cID,5,1)) * 8 ;
        + Val(Substr(cID,6,1)) * 4 ;
        + Val(Substr(cID,7,1)) * 2 ;
        + Val(Substr(cID,8,1)) * 1 ;
        + Val(Substr(cID,9,1)) * 6 ;
        + Val(Substr(cID,10,1)) * 3 ;
        + Val(Substr(cID,11,1)) * 7 ;
        + Val(Substr(cID,12,1)) * 9 ;
        + Val(Substr(cID,13,1)) * 10 ;
        + Val(Substr(cID,14,1)) * 5 ;
        + Val(Substr(cID,15,1)) * 8 ;
        + Val(Substr(cID,16,1)) * 4 ;
        + Val(Substr(cID,17,1)) * 2
    *计算校验位
    check_number=Int((12-nSum % 11)%11)为什么要用12  
    If check_number=10
        check_number='X'
    Endif
搜索更多相关主题的帖子: 身份证 
2014-09-23 15:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:7 
设:
X = nSum % 11
X与校验码有个对应关系
   X: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2

check_number=Int((12-nSum % 11)%11)
即:
check_number=Int((12-X)%11)
收到的鲜花
  • tlliqi2014-09-23 16:33 送鲜花  10朵   附言:加分
2014-09-23 16:21
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:7 
回复 2 楼 吹水佬
有道理
2014-09-23 16:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:7 
     Y值: 0 1 2 3 4 5 6 7 8 9 10
  校验码: 1 0 X 9 8 7 6 5 4 3 2

Y值+校验码的最大值为12

应该是这样理解吧

坚守VFP最后的阵地
2014-09-23 17:18
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
直接用nSum % 11也要求出对应的校验值,为何还要Int((12-nSum % 11)%11)不是多此一举?

2014-09-24 09:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
自己研究出来才有成就感

坚守VFP最后的阵地
2014-09-24 09:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2014-9-24 09:00:38的发言:

直接用nSum % 11也要求出对应的校验值,为何还要Int((12-nSum % 11)%11)不是多此一举?

是算法问题,也可以(nSum % 11)的结果作为索引号在校验码表(1 0 X 9 8 7 6 5 4 3 2)中检索结果。
如:
ALINES(a校验码, "1 0 X 9 8 7 6 5 4 3 2", " ")
X = nSum % 11
check_number = a校验码[X+1]

[ 本帖最后由 吹水佬 于 2014-9-24 10:17 编辑 ]
2014-09-24 10:05
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用sdta在2014-9-23 17:18:04的发言:

     Y值: 0 1 2 3 4 5 6 7 8 9 10
  校验码: 1 0 X 9 8 7 6 5 4 3 2
 
Y值+校验码的最大值为12
 
应该是这样理解吧
好象有点道理,但还是迁象,研究不出来所以然。
2014-09-24 15:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2014-9-24 15:05:14的发言:

好象有点道理,但还是迁象,研究不出来所以然。


研究研究
给定一条算式:
Y = (K-X)%11
X与Y的变动对应关系:
X: 0  1  2  3  4  5  6  7  8  9 10
Y: 1  0 10  9  8  7  6  5  4  3  2
变换为代数式:
K = 11*商 + Y + X
商=0 时,K=1  或 K=12。K=1时X<=1,不合题意。只能有K=12
商=1 时,K=12 或 K=23
商=2 时,K=23 或 K=34
......
可见:
K有多个选择,最小是12
2014-09-24 21:27
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用吹水佬在2014-9-24 21:27:20的发言:

 
 
研究研究
给定一条算式:
Y = (K-X)%11
X与Y的变动对应关系:
X: 0  1  2  3  4  5  6  7  8  9 10  
Y: 1  0 10  9  8  7  6  5  4  3  2
变换为代数式:
K = 11*商 + Y + X
商=0 时,K=1  或 K=12。K=1时X<=1,不合题意。只能有K=12
商=1 时,K=12 或 K=23
商=2 时,K=23 或 K=34
......
可见:
K有多个选择,最小是12
研究研究
给定一条算式:
Y = (K-X)%11
算式的得来?你是倒套出来的,不足说明成立的理由。
2014-09-25 08:35
快速回复:身份证最后一位的校验位公式中 check_number=Int((12-nSum % 11)%11)为 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046183 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved