gpt4 book ai didi

c# - 如何在 C# 中使用 zxing 应用 Reed-Solomon 算法

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:25 30 4
gpt4 key购买 nike

我想通过嘈杂的 channel 传输二进制数据。

我读到一个很好的检测错误的 ECC 算法是 Reed-Solomon。问题是我不理解该算法的输入。

这是我对 zxing.net 的幼稚失败尝试:

int[] toEncode = { 123,232,432};
var gf = GenericGF.AZTEC_DATA_12;
ReedSolomonEncoder rse = new ReedSolomonEncoder(gf);
rse.encode(toEncode, 2);

ReedSolomonDecoder rsd = new ReedSolomonDecoder(gf);
rse.encode(toEncode, 2);

请向我解释编码器和解码器的输入。

最佳答案

这是您在这里使用的实现吗:ReedSolomonEncoder.cs

如果是这样,要用 M 个数据校正整数对 N 个整数进行编码,您需要传递一个长度为 N+M 的数组。您的数据应该在前 N 个索引中,代码看起来会添加在最后 M 个条目的末尾。

此外,请注意编码器中的以下限制:

更新:最新版本在这里:http://zxingnet.codeplex.com/ .它的最新版本 ReedSolomonEncoder.cs没有这个限制。

此类实现处理中使用的 Reed-Solomon 编码方案 QR codes . Reed Solomon 编码的简要说明如下:Reed-Solomon Codes .

“QR_CODE_FIELD_256”的编码选择(这对您来说可能是一个合理的选择)意味着纠错码是在您的消息的字节大小的 block (“符号”)上生成的,这意味着您的最大消息长度(数据编码加上纠错码)是 255 字节长。如果您要发送更多数据,则需要将其分成 block 。

更新 2:使用 QR_CODE_FIELD_256,你的整数也需要在 0 到 255 之间,所以要编码一个通用的字节流,你需要将每个字节放入整数数组中的一个单独的整数中,传递 int 数组(加上纠错码的空间)通过编码器,然后重新转换为(更大的)字节数组。解码则相反。

关于c# - 如何在 C# 中使用 zxing 应用 Reed-Solomon 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642875/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com