Luhn 알고리즘 (모드 10 알고리즘) 소개 및 C \ # 코드 IMEI 검사
                                            
 2984 단어  c#
                    
ISO/IEC 7812-1:2017 파일 을 보면 luhn 알고리즘 에 대한 설명 을 볼 수 있 습 니 다. 다음 과 같 습 니 다.알고리즘 은 주로 세 단계 로 나 뉜 다. 첫 번 째 단계: 오른쪽 첫 번 째 (최저 위치) 부터 격 리 곱 하기 2;두 번 째 단계: 첫 번 째 단계 에서 얻 은 모든 숫자 를 원래 의 숫자 에 넣 고
  9*2=18, 1+8.세 번 째 단계: 0 으로 끝나 고 두 번 째 단계 에서 얻 은 수의 합 보다 큰 최소 정수 로 두 번 째 단계 에서 얻 은 합 을 빼 면 검증 위 치 를 얻 을 수 있 습 니 다.  70-67=3,3      두 번 째 단계 의 모든 숫자 와 0 로 끝나 면 검증 은 0 입 니 다.2. IMEI 검사
IMEI 코드 는 GSM (Global System for Mobile Communications, 글로벌 이동 통신 협회) 이 일괄 배분 해 BABT (British approvals Board of Telecommunications, 영국 통신 인증 관리 위원회) 가 심사 할 수 있 도록 권한 을 부여 한다.
  30、40、50  에서 IMEI 검증 은 TS.06 IMEI Allocation and Approval Process 을 통 해 계산 해 야 한다 고 규정 하고 다음 그림 과 같다.3. C \ # 코드
public class LuhnCalcCheckDigit
{
    /// 
    ///   Luhn       ,  IMEI、    
    ///  
    ///          
    /// 
    public static int CalcLuhnCheckDigit(string imei)
    {
        int checkDigit = 0;
        int addValue = 0;
        for (int i = 0; i < imei.Length; i++)
        {
            if (i % 2 == 0)
            {
                int result = Convert.ToInt32(imei[imei.Length - i - 1].ToString()) * 2;
                if (result > 9)
                {
                    addValue += (result - 9);
                }
                else
                {
                    addValue += result;
                }
            }
            else
            {
                addValue += Convert.ToInt32(imei[imei.Length - i - 1].ToString());
            }
        }
        if (addValue % 10 == 0)
        {
            checkDigit = 0;
        }
        else
        {
            checkDigit = 10 - addValue % 10;
        }
        return checkDigit;
    }
    /// 
    ///   Luhn          ,  IMEI、    
    ///  
    ///         
    /// 
    public static bool VerifyLuhn(string imei)
    {
        int checkDigit = 0;
        int addValue = 0;
        for (int i = 1; i < imei.Length; i++)
        {
            if (i % 2 == 1)
            {
                int result = Convert.ToInt32(imei[imei.Length - i - 1].ToString()) * 2;
                if (result > 9)
                {
                    addValue += (result - 9);
                }
                else
                {
                    addValue += result;
                }
            }
            else
            {
                addValue += Convert.ToInt32(imei[imei.Length - i - 1].ToString());
            }
        }
        if (addValue % 10 == 0)
        {
            checkDigit = 0;
        }
        else
        {
            checkDigit = 10 - addValue % 10;
        }
        return (checkDigit - Convert.ToInt32(imei[imei.Length - 1].ToString())) == 0;
    }
}  4. 참고 자료 링크
TS.06 IMEI Allocation and Approval Process
ISO/IEC 7812-1:2017
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.