【问题标题】:How to apply Reed-Solomon algorithm using zxing in C#如何在 C# 中使用 zxing 应用 Reed-Solomon 算法
【发布时间】:2014-08-26 01:02:21
【问题描述】:

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

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

这是我对 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);

请解释一下编码器和解码器的输入。

【问题讨论】:

    标签: c# algorithm zxing reed-solomon


    【解决方案1】:

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

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

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

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

    此类实现用于处理QR codes 的 Reed-Solomon 编码方案。 Reed Solomon 编码的一个非常简短的描述在这里:Reed-Solomon Codes

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

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

    【讨论】:

    • 是的,谢谢!你能解释一下这个限制的含义吗?我不知道我需要什么领域。我只知道我有不同长度的字节数组要传输。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多