|
- package id_validator
-
- import (
- "math"
- "strconv"
- "strings"
- )
-
- func GeneratorCheckBit(body string) string {
- // 位置加权
- var posWeight [19]float64
- for i := 2; i < 19; i++ {
- weight := int(math.Pow(2, float64(i-1))) % 11
- posWeight[i] = float64(weight)
- }
-
- // 累身份证号 body 部分与位置加权的积
- bodySum := 0
- bodyArray := strings.Split(body, "")
- count := len(bodyArray)
- for i := 0; i < count; i++ {
- bodySubStr, _ := strconv.Atoi(bodyArray[i])
- bodySum += bodySubStr * int(posWeight[18-i])
- }
-
- // 生成校验码
- checkBit := (12 - (bodySum % 11)) % 11
- if checkBit == 10 {
- return "X"
- }
- return strconv.Itoa(checkBit)
- }
|