首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 帮忙解释一下以下代码 [已结贴,结贴人:ljh0707]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljh0707
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 08:08:25 楼主
    Function Checksum(IMEI)
    On Error Resume Next
    Table = Array(Array(0, 8, 6, 4, 2, 9, 7, 5, 3, 1), Array(0, 9, 8, 7, 6, 5, 4, 3, 2, 1))
    Position = 1
    For I = 1 To 14
    Checksum = Checksum + Table(Position)(Mid(IMEI, I, 1))
    If Position = 1 Then
    Position = 0
    Else
    Position = 1
    End If
    Next I
    Do While Checksum >= 10
    Checksum = Checksum - 10
    Loop
    End Function
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-08-19 08:22:171楼 得分:40
    VB code
    Function Checksum(IMEI) On Error Resume Next Table = Array(Array(0, 8, 6, 4, 2, 9, 7, 5, 3, 1), Array(0, 9, 8, 7, 6, 5, 4, 3, 2, 1)) '建立一个二维数组 '相当于 Dim Table(1,9) 'Table(0,0)=0 'Table(0,1)=8 'Table(0,2)=6 '...... 'Table(1,8)=2 'Table(1,9)=1 Position = 1 For I = 1 To 14 Checksum = Checksum + Table(Position)(Mid(IMEI, I, 1)) '按照你给定的IMEI的值的第一位至第14位,分别读出数组的数据并累积相加 If Position = 1 Then '当现在读取数组中第1维的数据,再一次就读取第2维的数据。循环读取 Position = 0 Else Position = 1 End If Next I ''''下面一段是取得计算后的总和的个位数值。 '可以用下面的句话代替 'Checksum = Checksum Mod 10 Do While Checksum >= 10 Checksum = Checksum - 10 Loop End Function
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pen_sky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 09:41:182楼 得分:40
    Function Checksum(IMEI)
    On Error Resume Next
    Table = Array(Array(0, 8, 6, 4, 2, 9, 7, 5, 3, 1), Array(0, 9, 8, 7, 6, 5, 4, 3, 2, 1))
    '建立一个二维数组
    'Table(0)(0)=0,Table(0)(1)=8,Table(0,2)=6,......,Table(0)(8)=3,Table(0,9)=1
    'Table(1)(0)=0,Table(1)(1)=9,Table(1,2)=8,......,Table(1)(8)=2,Table(1,9)=1

    Position = 1

    For I = 1 To 14  '分别判断你给定的IMEI值的第一位至第14位
      Checksum = Checksum + Table(Position)(Mid(IMEI, I, 1)) '根据每一位读出二维数组的数据并累加,由于Position = 1先从 Table(1)()先读起,下次在Table(0)()中读出,交替读
     
      If Position = 1 Then                                 
        Position = 0
      Else
        Position = 1
      End If
     
    Next I

    '计算总和的个位数值

    Do While Checksum >= 10
    Checksum = Checksum - 10
    Loop
    End Function

    从你给出的例子来看,最后的结果和IMEI的奇数位上的数值无任何关系;另外,最后的结果和IMEI的偶数位上的1和9的数值无任何关系;其余偶数位上的数值存在如下对应关系:
    数值  结果中的增量
    8 1
    7 2
    6 3
    5 4
    4 6
    3 7
    2 8
    1 9
    具体实现什么功能要结合你的思路了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pen_sky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 09:41:553楼 得分:20
    更正一下:
    从你给出的例子来看,最后的结果和IMEI的奇数位上的数值无任何关系;另外,最后的结果和IMEI的偶数位上的0和9的数值无任何关系;其余偶数位上的数值存在如下对应关系:
    数值  结果中的增量
    8 1
    7 2
    6 3
    5 4
    4 6
    3 7
    2 8
    1 9
    具体实现什么功能要结合你的思路了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved