M = số bit trong chỉ báo mode (4 bit đối với mã hình QR code hoặc là có số bit như quy địn hở Bảng
13. Dữ liệu được chuyển giao 1 Các nguyên tắc chung
13.3. Các phương thức dịch kênh mở rộng (ECI)
Trong các hệ thống hỗ trợ giao thức ECI, mỗi khi chuyển dữ liệu cần phải chuyển cả số phân định mã hình. Bất kỳ khi nào xuất hiện chỉ báo mode ECI thì chỉ báo này phải được chuyển thành ký tự thoát 5CHEX (thể hiện ký tự dấu vạch chéo ngược “\” trong ISO/IEC 8859-1 và trong quy định kỹ thuật AIM ECI và phản ánh ký tự”¥ * trong JIS X 0201). (Các) từ mã này thể hiện mã hiệu ECI được chuyển thành con số 6 chữ số bằng cách đảo ngược các quy tắc đã nêu trong Bảng 4. Sáu chữ số này phải được chuyển giao ngay lập tức thành các giá trị 8-bit tương ứng trong dải từ 30HEX tới 39HEX tiếp theo ký tự thoát.
Phần mềm ứng dụng khi gặp cụm ký tự \nnnnnn sẽ giải nghĩa tất cả các ký tự liên tiếp này như là một mã hiệu ECI được định nghĩa bởi mã hiệu 6 chữ số. Bộ dịch này vẫn cịn có hiệu quả cho đến khi:
- phần cuối của dữ liệu được mã hóa;
- một sự thay đổi đối với phương thức ECI mới được tạo mã bằng chỉ báo mode 0111, đối tượng của các nguyên tắc theo quy định kỹ thuật AIM ECI.
Khi chuyển đổi thành phương thức dịch mặc định, bộ giải mã phải thơng báo trình tự thốt thích hợp như là tiền tố của dữ liệu.
Nếu ký tự 5CHEX cần được sử dụng như là dữ liệu được mã hóa, sự chuyển giao phải được tiến hành như sau: bất kỳ khi nào ký tự 5CHEX biến thể như một dữ liệu, hai byte của giá trị sẽ được chuyển, tuy vậy một biến thể đơn lẻ luôn luôn là một ký tự thoát và biến thể kép chỉ ra dữ liệu thực.
VÍ DỤ 1
a) Dữ liệu được mã hóa (hex): 41 42 43 5C 31 32 33 34 Dữ liệu được chuyển thành: 41 42 43 5C 5C 31 32 33 34
b) Dữ liệu được mã hóa: <further data> theo ABC được mã hóa theo các quy tắc đối với ECI 123456 Dữ liệu được chuyển thành: 41 42 43 5C 31 32 33 34 35 36 <further data>
VÍ DỤ 2 (sử dụng dữ liệu trong 6.4.2.1)
Gói tin bao gồm chỉ báo mode ECI/ mã hiệu ECI/ chỉ báo mode/ chỉ dấu đếm ký tự/ dữ liệu ở dưới dạng
0111 00001001 0100 00000101 10100001 10100010 10100011 10100100 10100101
Số phân định mã hình: ]Q2 (xem Phụ lục F) phải được thêm vào khi có sự chuyển dữ liệu. Chuyển thành (các giá trị hex.): 5D 51 32 5C 30 30 30 30 30 39 A1 A2 A3 A4 A5
Dữ liệu được mã hóa trong ECI 000009: ABΓ∆E
Trong mode kết nối có cấu trúc, khi gặp chỉ báo mode ECI ở đầu mã hình, các ký tự dữ liệu tiếp theo phải được xem như là (các) mode ECI đang chạy ở phần cuối của mã hình có trước.
CHÚ THÍCH Ký tự 5CHEX tương đương với ký tự dấu vạch chéo ngược “\” trong ISO/IEC 8859-1 và “¥” trong JIS X 0201.
13.4. FNC 1
Trong các mode có ký tự FNC1 ẩn ở vị trí đầu tiên hoặc thứ hai, ký tự ẩn này khơng thể được chuyển trực tiếp bởi vì khơng có giá trị byte tương ứng với nó. Vì vậy, cần thiết phải chỉ ra sự hiện hữu của nó ở vị trí đầu tiên hoặc thứ hai bằng việc chuyển các số phân định mã hình thích hợp (]Q3, ]Q4, ]Q5 hay ]Q6). Ở các vị trí khác trong mã hình thì tùy theo các quy định kỹ thuật ứng dụng có liên quan có thể xuất hiện chỉ dấu phân cách trường dữ liệu, được thể hiện trong mode chữ số bằng ký tự % và trong mode byte bằng ký tự GS (ASCII/JIS8 giá trị 1DHEX). Trong cả hai trường hợp, bộ giải mã phải chuyển giao ASCII/JIS8 giá trị 1DHEX.
Nếu trong các mã hình ở mode FNC1 thì ký tự % cần được mã hóa như là dữ liệu trong khi đó ở mode chữ số thì nó phải được thể hiện trong mã hình bằng %%. Nếu gặp ký tự kép này thì bộ giải mã sẽ chuyển thành ký tự % đơn.
Phụ lục A
(quy định)
Các đa thức sinh tìm lỗi và sửa lỗi
Đa thức sinh kiểm tra ký tự được sử dụng để phân chia đa thức từ mã dữ liệu, trong đó mỗi từ mã là hệ số của đa thức chia theo cấp bậc giảm dần. Các hệ số của số dư trong phép chia này chính là các giá trị của từ mã sửa lỗi.
Bảng A.1 chỉ ra các đa thức sinh đối với các mã sửa lỗi được sử dụng cho mỗi cỡ hình và mức, cho mọi mã hình QR code 2005. Có thể tham khảo Bảng 9 để biết một số từ mã sửa lỗi được yêu cầu cho một cỡ hình và một mức sửa lỗi đặc biệt. Trong Bảng A.1, α là phần tử nguyên thủy 2 theo GF(28). Mỗi một đa thức sinh là kết quả của các đa thức bậc một: X-20, X-21,…, X-2n-1 trong đó n là bậc của đa thức sinh.
Phụ lục B
(quy định)
Các bước giải mã sửa lỗi
Lấy mã hình cỡ 1-M làm ví dụ. Với mã hình này, mã (26, 16, 4) RS dưới GF(28) được dùng để sửa lỗi. Giả sử mã sau khi gỡ mặt nạ dữ liệu khỏi mã hình là:
R = (r0, r1 , r2 ,…. r25)
Hay là,
R(x)= r0+ r1x + r2x2+...+ r25x25
ri(i= 0-25) là một phần tử của GF(28)
(i) Tính tốn các tập hợp n (trong đó n bằng số từ mã sẵn có để sửa lỗi, cho bởi (c - k - p) như nêu trong Bảng 9). Tìm tập hợp Si(i= 0-(n - 1)) S0= R(1)= r0 + r1 + r2 + … + r25 S1= R(α)=r0 + r1α + r2α2 + … + r25α25 …. …. S7= R(α7)= r0+ r1α7+ r2α14 +... + r25α175
trong đó α là phần tử ngun thủy của GF(28) (ii) Tìm vị trí lỗi
S0σ4 - S1σ3 + S2σ2 - S3σ1 + S4 = 0 S1σ4 - S2σ3 + S3σ2 - S4σ1 + S5 = 0
S2σ4 - S3σ3 + S4σ2 - S5σ1 + S6 = 0 S3σ4 - S4σ3 + S5σ2 - S6σ1 + S7 = 0
Sử dụng cơng thức trên để tìm biến σi (i = 1-4) cho từng vị trí lỗi
Sau đó thay biến σi đối với đa thức dưới đây và thay lần lượt từng phần tử của GF(28).
σ(x)= σ4 + σ3x+ σ2x2 + σ1x3 + x4
Đến đây, lỗi tìm thấy ở chữ số thứ j (đếm từ số thứ 0) cho phần tử αj làm cho σ (α) = 0 (iii) Tìm kích thước lỗi
Giả sử bước (ii) tìm thấy lỗi ở chữ số j1, j2, j4, sau đây sẽ tìm kích thước lỗi.
Y1αj1 + Y2αj2 + Y3αj3 + Y4αj4 = S0
Y1α2j1 + Y2α2j2 + Y3α2j3 + Y4α2j4 = S1
Y1α3j1 + Y2α3j2 + Y3α3j3 + Y4α3j4 = S2
Y1α4j1 + Y2α4j2 + Y3α4j3 + Y4α4j4 = S3
Giải phương trình trên để tìm ra kích thước từng lỗi Yi(i= 1- 4). (iv) Sửa lỗi
Sửa lỗi bằng cách cộng phần bù giá trị kích thước lỗi vào từng vị trí bị lỗi.
Phụ lục C
(quy định)
Thông tin định dạng
Thông tin định dạng bao gồm một chuỗi 15 bit, trong đó có 5 bit dữ liệu và 10 bit sửa lỗi BCH. Phụ lục này mơ tả cách tính tốn các bit sửa lỗi và quá trình giải mã sửa lỗi.