기글 하드웨어 질문 게시판
각종 질문을 올릴 수 있는 곳입니다. 먼저 검색해 보고 질문을 올리는 것이 더 효율적입니다. 충분한 정보와 예의를 갖춰 글을 작성해 주시고 문제가 해결되면 꼭 댓글을 달아 주세요.
오른쪽의 060553은 패턴표대로 읽을 수 있었는데 왼쪽의 8801037은 패턴과는 조금 다른 것 같습니다. 읽는 순서나 방법이 따로 있나요?
EAN-13 바코드 패턴은 다음과 같다.
분류 | 데이터 | 코드 |
가드 바 | 왼쪽 | ■□■ (101) |
가운데 | □■□■□ (01010) | |
오른쪽 | ■□■ (101) | |
숫자(왼쪽) | 0 | □□□■■□■ (0001101) |
1 | □□■■□□■ (0011001) | |
2 | □□■□□■■ (0010011) | |
3 | □■■■■□■ (0111101) | |
4 | □■□□□■■ (0100011) | |
5 | □■■□□□■ (0110001) | |
6 | □■□■■■■ (0101111) | |
7 | □■■■□■■ (0111011) | |
8 | □■■□■■■ (0110111) | |
9 | □□□■□■■ (0001011) | |
숫자(오른쪽) | 0 | ■■■□□■□ (1110010) |
1 | ■■□□■■□ (1100110) | |
2 | ■■□■■□□ (1101100) | |
3 | ■□□□□■□ (1000010) | |
4 | ■□■■■□□ (1011100) | |
5 | ■□□■■■□ (1001110) | |
6 | ■□■□□□□ (1010000) | |
7 | ■□□□■□□ (1000100) | |
8 | ■□□■□□□ (1001000) | |
9 | ■■■□■□□ (1110100) |
2016.05.22 20:12:41
이렇게 복잡(?)해진 것도 역시 역사적 이유 때문인데요.
EAN-13 코드는 UPC-A 코드의 확장판이죠.
UPC-A 코드는 IBM 이 만든 12 자리짜리 바코드고요. ( 역사 탐구 들어가면 IBM 빠지면 말이 안 됨 ) 메이커 코드, 상품 코드 등이 고려된 것이고, 국제적 코드로 만들 준비는 안 되어 있었죠. 국가 구분할 이유없이 그냥 메이커 코드 쓰는 것으로 한다는 식.
물론 훗날에 이르러 https://en.wikipedia.org/wiki/List_of_GS1_country_codes 여기 나오는 국가 코드를 도입하게 되는데, 문제는 기존 12 자리짜리 바코드를 같이 쓰게 하는 것.
그래서 왼쪽 6 자리에 odd/even 을 섞어서 숨겨진 6 비트를 만들어내는 겁니다. 이 숨겨진 6 비트를 이용하면 맨 왼쪽에 바코드 자리수를 늘리지 않고도 숫자 1 개 더 넣어서 13 자리 바코드를 만들 수 있게 된거죠.
ps. 위 글에 따오신 설명은 EAN-13 이 아니라 UPC-A 코드의 설명이라 보시면 됨.
EAN-13 코드는 UPC-A 코드의 확장판이죠.
UPC-A 코드는 IBM 이 만든 12 자리짜리 바코드고요. ( 역사 탐구 들어가면 IBM 빠지면 말이 안 됨 ) 메이커 코드, 상품 코드 등이 고려된 것이고, 국제적 코드로 만들 준비는 안 되어 있었죠. 국가 구분할 이유없이 그냥 메이커 코드 쓰는 것으로 한다는 식.
물론 훗날에 이르러 https://en.wikipedia.org/wiki/List_of_GS1_country_codes 여기 나오는 국가 코드를 도입하게 되는데, 문제는 기존 12 자리짜리 바코드를 같이 쓰게 하는 것.
그래서 왼쪽 6 자리에 odd/even 을 섞어서 숨겨진 6 비트를 만들어내는 겁니다. 이 숨겨진 6 비트를 이용하면 맨 왼쪽에 바코드 자리수를 늘리지 않고도 숫자 1 개 더 넣어서 13 자리 바코드를 만들 수 있게 된거죠.
ps. 위 글에 따오신 설명은 EAN-13 이 아니라 UPC-A 코드의 설명이라 보시면 됨.
작성된지 2주일이 지난 글에는 새 코멘트를 달 수 없습니다.
https://en.wikipedia.org/wiki/International_Article_Number_(EAN)
여기에서 Binary encoding of data digits into EAN-13 barcode 를 보세요.
한국 국가 코드는 880 으로 시작. 맨 왼쪽 자리가 8 이기 때문에 왼쪽 부분은 LGLGGL 로 엔코딩되죠. ( L 인 자리는 L-code 로, G 인 자리는 G-code 로 )
여기서 주의할 점은 880 으로 시작하지만 바코드에는 맨 왼쪽 8 은 들어가지 않고요. 위 예에서는 801037 만 왼쪽에 코딩.
그렇다고 8 이 아예 사라지는게 아니라 코드를 섞어서 엔코딩하는 규칙을 통해 다시 산출해낼 수 있습니다.
왼쪽 1,3,6 번째 자리는 위 설명에 있는 L-code 를 써서 엔코딩되고,
왼쪽 2,4,5 번째 자리는 G-code 를 써서 엔코딩됩니다.
왼쪽 801037 는 0110111 0100111 0011001 0100111 0100001 0111011 이렇게 코딩됨.