我在 Java 项目中使用 Reed-Solomon 纠错。我使用的库是 JavaReedSolomon ( https://github.com/Backblaze/JavaReedSolomon )。有一个使用 JavaReedSolomon 进行解码的示例:
byte[][] shards = new byte[NUM_SHARDS][SHARD_SIZE];
//shards is the array containing all the shards
ReedSolomon reedSolomon = ReedSolomon.create(NUM_DATA_SHARDS, NUM_PARITY_SHARDS);
reedSolomon.decodeMissing(shards, shardPresent, 0, shardSize);
数组 shardPresent 表示哪些 shard 肯定是正确的,例如,如果你确定第 4 个 shard 是正确的,那么 shardPresent[3] 等于 true。
我的问题是,Reed-Solomon 解码是否一定需要知道哪些分片是正确的,或者这只是这个库如何实现它?