QR코드 생성 방법 (3)

처음으로   이전 페이지   다음 페이지


주의: 이 페이지는 번역 오류를 포함하고 있을 수도 있습니다.

2.3 오류 정정 코드 계산

QR코드의 오류 정정에는 Reed-solomon 알고리즘이 사용된다.

먼저, 전 단계에서 나온 결과를 표5의 규칙에 의해 RS 블록으로 분할한다.
예제 데이터는 1-H를 사용하는데 이는 RS 블록 1이므로 분할할 필요는 없다.

그 다음에는 표3에서 g(x)를 선택한다.
예제 데이터에서 오류 정정 코드의 크기는 17이므로, 아래와 같은 g(x)를 선택하게 된다.

g(x) = x17 + α43x16 + α139x15 + α206x14 + α78x13 + α43x12
         + α239x11 + α123x10 + α206x9 + α214x8 + α147x7 + α24x6
         + α99x5 + α150x4 + α39x3 + α243x2 + α163x + α136

위 식에서의 α는 GF(28)의 원시근(Primitive Element)이다.

GF(28)의 특징들은 다음과 같다.
 1. 사칙연산이 모두 지원된다.
 2. α255 = 1
 3. 표4를 사용하여 α의 거듭제곱을 정수로(또는 그 반대로) 변환할 수 있다.


이제 데이터 코드를 각 항의 계수로 가진 다항식 f(x)를 g(x)로 나누는 과정을 보자.


f(x) = 32x25 + 65x24 + 205x23 + 69x22 + 41x21 + 220x20 + 46x19 + 128x18 + 236x17 <--- (1)

g(x)로 나누는 방법은 다음과 같다.

f(x)의 최고차항의 계수는 32이다.
표4에서 32는 α5와 같으므로 g(x)에 이를 곱하자.

g(x)*(α5)*x8

= α5*x25 + α543*x24 + α5139*x23 + α5206*x22 + α578*x21 + ...

= α5*x25 + α48*x24 + α144*x23 + α211*x22 + α83*x21 + ...

= 32x25 + 70x24 + 168x23 + 178x22 + 187x21 + ... <--- (2)

(1)과 (2)의 베타적논리합(Exclusive Logical Sum, Excusive OR, XOR)을 계산하면 f(x)'가 나온다.

f(x)'=7x24 +101x23 +247x22+146x21.....

이제 상수항이 나올 때 까지 같은 방법으로 계속 나누자. 7은 α198이므로 g(x)에 이를 곱하자. g(x)*α198*x7을 사용하면 된다.
만약 α의 지수가 255를 초과한다면, "α255 = 1" 임을 이용하여 지수를 줄여라.

위 작업이 종료되면 아래의 R(x)를 얻게 된다.

R(x)=42x16 +159x15 +74x14 +221x13 +244x12 +169x11+239x10
    +150x9 +138x8 +70x7 +237x6 +85x5 +224x4 +96x3 +74x2 +219x +61

(자세한 계산 과정은 표6을 참고하여라.)

이를 10진수로 나타낸 코드 데이터에 추가하면 다음과 같이 된다.

32 65 205 69 41 220 46 128 236 42 159 74 221 244 169 239 150 138 70 237 85 224 96 74 219 61


이전 페이지   다음 페이지