Q:二維碼RS編碼算法C代碼編寫?
A:文檔代碼爲python,編寫爲C代碼,下載地址:RS編譯碼 C代碼
Q:二維碼伽羅華域,本原多項式(不可約多項式,或質數多項式)如何生成?0x11D如何計算得出?其他值怎麼計算?
A:本原多項式滿足條件:1、不可約(不能由 0x0~0xFF*0x0~0xFF相乘得到) 2、進行伽羅華域指數計算(2的n次冪)時0x1~0xFF唯一確定 3、值應大於0xFF
代碼編寫:1、將0x100~0x200之間的數據作爲候選項
2、去除0x100~0x200之間可由0x0~0xFF*0x0~0xFF得到的數(相乘可以得到的數取模等於0,將會有a*b=0(a、b均不爲0),不符合運算)
3、驗證伽羅華域指數計算值唯一確定(去除不唯一確定的值)
4、剩下的數據都符合本原多項式條件,可在代碼(下載地址:https://download.csdn.net/download/cmc9527/11952350)驗證生成值
C 代碼下載:裏德-所羅門本原多項式生成 C代碼
Q:如何驗證代碼正確性?
A:二維碼文檔中描述了相關糾錯碼的數據
採用 Version 5 + Q,下列數據可以驗證
代碼中採用的數據爲第一組第一塊驗證
二維碼標準下載:二維碼標準
在文檔 Annex A 中可以直接查詢生成校驗多項式(注意:二維採用本原多項式爲0x11D,如裏採用其他本原多項式,則需要重新生成校驗多項式)
組 | 塊 | 數據 | 對每個塊的糾錯碼 |
---|---|---|---|
1 | 1 | 67 85 70 134 87 38 85 194 119 50 6 18 6 103 38 | 213 199 11 45 115 247 241 223 229 248 154 117 154 111 86 161 111 39 |
2 | 246 246 66 7 118 134 242 7 38 86 22 198 199 146 6 | 87 204 96 60 202 182 124 157 200 134 27 129 209 17 163 163 120 133 | |
2 | 1 | 182 230 247 119 50 7 118 134 87 38 82 6 134 151 50 7 | 148 116 177 212 76 133 75 242 238 76 195 230 189 10 108 240 192 141 |
2 | 70 247 118 86 194 6 151 50 16 236 17 236 17 236 17 236 | 235 159 5 173 24 147 59 33 106 40 255 172 82 2 131 32 178 236 |