Code 128 바코드 변환 문의드립니다.

안녕하세요. 바코드 변환시 check sum 때문에 문의드립니다.

바코드가 리딩이 되도록 하려면 문자열을 변환해야 하는데 code 128 B 의 checksum 때문인지 일부

문자가 리딩이 되질 않습니다. 변환된 문자를 표현을 못하는데 이럴 경우에는 어찌해야 할까요??

도움부탁드립니다.

image

//Code 128 B
//Start Code (intSOD) : 104
 intSUM = intSOD; //intSOD : 104

//barcodeStr = CNYTAI0008
// intpBARCODE = barcodeStr.length
 for (int i = 0; i < intpBARCODE; i++) 
 {
     int intVAL = 0;
     intVAL = barcodeStr[i]; 
     intVAL = intVAL - 32; //Code -> Value 변경
     
   Console.WriteLine(string.Format("Text : {0} : [ {1} ]" , barcodeStr[i] , intVAL));

     intSUM = intSUM + intVAL * (i + 1);
 }
    intMMM = intSUM % intMOD; //intMOD는 103 고정값

    strSUM = Char.ToString((char)(intMMM + 32));

  Console.WriteLine(string.Format("CHECK SUM  :  {0} % {1} = {2}  --> [ {3} ]", intSUM.ToString(), (intMOD).ToString(), (intMMM).ToString(),strSUM));

 // 결과
 CHECK SUM  :  1645 % 103 = 100  --> [ ? ]
나머지 결과에 32를 더하므로 132 ,  Ascii character = „  그러나 표현이 안됨

1 Like

나무위키 참고했습니다.

‘000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다.’

귀하의 ‘132’ 는 아스키 코드에 없고,
어쩌면 128(0), 129(1), 130(2), 131(3), 132(4) 해서, 프린트할 수 없는 문자 - EOT - 일 수도 있습니다.

https://namu.wiki/w/아스키%20코드

1 Like

안녕하세요. code 128 B이 아스키코드상에 있는 모든 문자열을 표현할 수 있다고 했는데 대소문자가 필요한 부분이라 128을 썼는데 뭔가 체크섬 계산에 문제가 있나보네요 ;;; 말씀하신바와 같이 아스키코드를 벗어난거라면 저걸 어찌처리해야 하는건지 찾아봐야겠네요 … 아니면 관련부서와 협의해서 코드체계를 바꿔야 겠네요 ㅠㅠ 감사합니다.