我是靠谱客的博主 高贵灰狼,最近开发中收集的这篇文章主要介绍Golang 实现IMEI校验码算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

IMEI校验码算法:
(1).将偶数位数字分别乘以2,分别计算个位数和十位数之和
(2).将奇数位数字相加,再加上上一步算得的值
(3).如果得出的数个位是0则校验位为0,否则为10减去个位数
如:35 89 01 80 69 72 41 偶数位乘以2得到52=10 92=18 12=02 02=00 92=18 22=04 1*2=02,计算奇数位数字之和和偶数位个位十位之和,得到 3+(1+0)+8+(1+8)+0+(0+2)+8+(0+0)+6+(1+8)+7+(0+4)+4+(0+2)=63 => 校验位 10-3 = 7,则最后位为7,所以完整是358901806972417

func calculateCheckDigit(prefix string) int {
    var total, sum1, sum2 int
    n := len(prefix)
    for i := 0; i < n; i++ {
        num, _ := strconv.Atoi(string(prefix[i]))
        // 奇数
        if i % 2 == 0 {
            sum1 += num
        } else { // 偶数
            tmp := num * 2
            if tmp < 10 {
                sum2 += tmp
            } else {
                sum2 = sum2 + tmp + 1 - 10
            }
        }
    }
    total = sum1 + sum2
    if (total % 10 == 0) {
        return  0
    } else {
        return  10 - (total % 10)
    }
}

最后

以上就是高贵灰狼为你收集整理的Golang 实现IMEI校验码算法的全部内容,希望文章能够帮你解决Golang 实现IMEI校验码算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部