컨테이너 번호 확인을 해야 하는데 찾아 나오는 C# 소스 코드가 에러가 있어서 수정해보았다. 방식은 다음(링크)을 참조했다.
private bool Cntrnumb_Chk(string conNumber)
{
//11자리 그대로 들어와야 한다.
if (conNumber.Equals(""))
return false;
int nChk = 0;
int nBcd = 0;
int nHap = 0;
string sChk = "";
conNumber = conNumber.Trim();
for (int i = 0; i < conNumber.Length - 1; i++)
{
nBcd *= 2;
if (nBcd == 0)
nBcd = 1;
sChk = conNumber.Substring(i, 1);
switch (sChk)
{
case "A": nChk = 10; break;
case "B": nChk = 12; break;
case "C": nChk = 13; break;
case "D": nChk = 14; break;
case "E": nChk = 15; break;
case "F": nChk = 16; break;
case "G": nChk = 17; break;
case "H": nChk = 18; break;
case "I": nChk = 19; break;
case "J": nChk = 20; break;
case "K": nChk = 21; break;
case "L": nChk = 23; break;
case "M": nChk = 24; break;
case "N": nChk = 25; break;
case "O": nChk = 26; break;
case "P": nChk = 27; break;
case "Q": nChk = 28; break;
case "R": nChk = 29; break;
case "S": nChk = 30; break;
case "T": nChk = 31; break;
case "U": nChk = 32; break;
case "V": nChk = 34; break;
case "W": nChk = 35; break;
case "X": nChk = 36; break;
case "Y": nChk = 37; break;
case "Z": nChk = 38; break;
case "1": nChk = 1; break;
case "2": nChk = 2; break;
case "3": nChk = 3; break;
case "4": nChk = 4; break;
case "5": nChk = 5; break;
case "6": nChk = 6; break;
case "7": nChk = 7; break;
case "8": nChk = 8; break;
case "9": nChk = 9; break;
default: nChk = 0; break;
}
nChk *= nBcd;
nHap += nChk;
}
nChk = nHap / 11;
nChk *= 11;
nChk = nHap - nChk;
if (nChk == 10)
nChk = 0;
if (Convert.ToInt16(conNumber.Substring(conNumber.Length - 1, 1)) == nChk)
return true;
else
return false;
}
'C#' 카테고리의 다른 글
DataTable을 Select하기. (0) | 2020.03.23 |
---|