概述
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校验码算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复