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에 따라 라이센스가 부여됩니다.