質問編集履歴

4

調べてみたことを追記

2021/05/21 06:42

投稿

HogHog
HogHog

スコア1

test CHANGED
File without changes
test CHANGED
@@ -214,6 +214,12 @@
214
214
 
215
215
  ```
216
216
 
217
+ //追記
218
+
219
+ gfを28としていますが調べてみたところガロア体なのでGF(2^8=256)ではないかと考えています。
220
+
221
+
222
+
217
223
  processing用に書き換えたもの
218
224
 
219
225
  ```processing

3

webで回したCコードを追記

2021/05/21 06:42

投稿

HogHog
HogHog

スコア1

test CHANGED
File without changes
test CHANGED
@@ -104,6 +104,116 @@
104
104
 
105
105
  ```
106
106
 
107
+ webでRuntimeErrorが出たもの
108
+
109
+ ideoneというサイトで回しました
110
+
111
+ ```C
112
+
113
+ #include <stdio.h>
114
+
115
+ #include <stdlib.h>
116
+
117
+
118
+
119
+ int prod(int x,int y,int *log,int *alog,int gf){
120
+
121
+ if(!x || !y)
122
+
123
+ return 0;
124
+
125
+ else
126
+
127
+ return alog[(log[x] + log[y]) %(gf-1)];
128
+
129
+ }
130
+
131
+
132
+
133
+ void ReedSolomon(int *wd, int nd, int nc, int gf, int pp) {
134
+
135
+ int i,j,k,*log,*alog,*c;
136
+
137
+ log = malloc(sizeof(int) * gf);
138
+
139
+ alog = malloc(sizeof(int) * gf);
140
+
141
+ log[0] = 1-gf; alog[0] = 1;
142
+
143
+ for (i = 1; i < gf; i++) {
144
+
145
+ alog[i] = alog[i-1] * 2;
146
+
147
+ if (alog[i] >= gf) alog[i] ^= pp;
148
+
149
+ log[alog[i]] = i;
150
+
151
+ }
152
+
153
+ c = malloc(sizeof(int) * (nc+1));
154
+
155
+
156
+
157
+ for (i=1; i<=nc; i++) c[i] = 0;
158
+
159
+ c[0] = 1;
160
+
161
+ for (i=1; i<=nc; i++) {
162
+
163
+ c[i] = c[i-1];
164
+
165
+ for (j=i-1; j>=1; j--) {
166
+
167
+ c[j] = c[j-1] ^ prod(c[j],alog[i],log,alog,gf);
168
+
169
+ }
170
+
171
+ c[0] = prod(c[0],alog[i],log,alog,gf);
172
+
173
+ }
174
+
175
+ for (i=nd; i<=(nd+nc); i++) {
176
+
177
+ wd[i] = 0;
178
+
179
+ }
180
+
181
+ for (i=0; i<nd; i++) {
182
+
183
+ k = wd[nd] ^ wd[i];
184
+
185
+ for (j=0; j<nc; j++) {
186
+
187
+ wd[nd+j] = wd[nd+j+1] ^ prod(k,c[nc-j-1],log, alog,gf);
188
+
189
+ }
190
+
191
+ }
192
+
193
+ free(c);
194
+
195
+ free(alog);
196
+
197
+ free(log);
198
+
199
+ }
200
+
201
+ int main()
202
+
203
+ {
204
+
205
+ printf("Hello, World!\n");
206
+
207
+ int wd[3] = {142,164,186};
208
+
209
+ ReedSolomon(wd,3,5,28,301);
210
+
211
+ return 0;
212
+
213
+ }
214
+
215
+ ```
216
+
107
217
  processing用に書き換えたもの
108
218
 
109
219
  ```processing

2

タイトルにデータマトリックスを作るためにを追加

2021/05/18 05:48

投稿

HogHog
HogHog

スコア1

test CHANGED
@@ -1 +1 @@
1
- ECC200のエラーコード作成方法についてC->java
1
+ DataMatrixを作るためにECC200のエラーコード作成方法についてC->java
test CHANGED
File without changes

1

processingコードの一部間違えていたため訂正(訂正前はコメントアウト部)

2021/05/18 05:12

投稿

HogHog
HogHog

スコア1

test CHANGED
File without changes
test CHANGED
@@ -158,7 +158,9 @@
158
158
 
159
159
  alogDic.set(str(i), alogDic.get(str(i))^pp);
160
160
 
161
+ //logDic.set( str(i), ( alogDic.get( str(i) ) ) );
162
+
161
- logDic.set( str(i), ( alogDic.get( str(i) ) ) );
163
+    logDic.set( str ( alogDic.get( str(i) )) ,(i) );
162
164
 
163
165
  }
164
166