手机IMEI生成工具 生成最后一位 并写入Excel C#版

在这里插入图片描述

import random

def calculate_luhn(pure):
    total = 0
    for i in range(14):
        if i % 2 == 0:
            total += int(pure[i])
        else:
            doubled = int(pure[i]) * 2
            total += (doubled // 10) + (doubled % 10)
    check_digit = (10 - (total % 10)) % 10
    return pure + str(check_digit)

def generate_imei():
    first_14_digits = str(random.randint(10000000000000, 99999999999999))
    return calculate_luhn(first_14_digits)

print(generate_imei())

这个程序首先生成一个14位的随机数,然后使用Luhn算法计算第15位的校验位。Luhn算法是一种简单的校验和算法,用于验证各种身份识别号码,如信用卡号码和IMEI号码。

C# 版

   public static bool imeiCheck(MyDel Log, string IMEI)
   {
       if (IMEI.Length != 15) { Log("IMEI length is " + IMEI.Length + ",it should be 15."); return false; }
       if (!Regex.IsMatch(IMEI, @"^[0-9]*$")) { Log(IMEI + " It should be all numbers."); return false; }
       char check = GetIMEICheckDigit(IMEI.Substring(0, 14));
       if (check != IMEI.Last()) { Log(IMEI + " The last IMEI digit is " + IMEI.Last() + ",it should be " + check); return false; }
       return true; //OK
   }

   public static char GetIMEICheckDigit(string imei)  //生成imei校验位
   {
       int i;
       int sum1 = 0, sum2 = 0, total = 0;
       int temp = 0;

       for (i = 0; i < 14; i++)
       {
           if ((i % 2) == 0)
           {
               sum1 = sum1 + imei[i] - '0';
           }
           else
           {
               temp = (imei[i] - '0') * 2;
               if (temp < 10)
               {
                   sum2 = sum2 + temp;
               }
               else
               {
                   sum2 = sum2 + 1 + temp - 10;
               }
           }
       }

       total = sum1 + sum2;

       if ((total % 10) == 0)
       {
           return '0';
       }
       else
       {
           return (char)(((total / 10) * 10) + 10 - total + '0');
       }
   }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值