- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的数据结构类(class)中,我想为我的最终项目创建一个二维码生成器。但是,我在理解其中的“格式化错误更正”部分时遇到了一些麻烦。我想使用 11 (L) 的纠错和 100 的掩码模式(每隔一行)。因为我是一名本科生,所以我想尝试让处理版本 1 QR 码和使用字节编码变得非常简单。
那我就不明白数据输出后怎么搞出纠错框了。
最佳答案
查看一些规范,纠错级别L(低,可以纠正7%)被识别为两位模式01,而不是11。链接到QR码格式字符串,其中包括掩码和纠错级别。
http://www.thonky.com/qr-code-tutorial/format-version-information
由于您选择了特定的纠错级别和掩码模式,它们与 thonky.com 网页中使用的相同,因此格式字符串将是固定的 15 位位模式:“最终格式字符串为具有纠错级别 L 和掩码模式 4 的代码是 110011000101111",因此您不必费心计算它。
对于 QR 码,8 位字段 GF(2^8) 基于 9 位多项式
x^8 + x^4 + x^3 + x^2 + 1 = hex 11d
the primitive α = x + 0 = hex 2
请注意,二进制字段的加法和减法与 xor 相同。
QR 码版本 1 是一个 21 x 21 位 = 441 位的矩阵,表示为黑色或白色方 block ,其中 208 位 == 26 字节用于数据和 ecc。
纠错级别为L的QR码有152位==19字节的数据和56位==7字节的ecc,4位用于纠错,3位用于检测。用于校正的4个字节可以校正26个字节中的2个,约占26个数据字节的7%。除了用于检测的 3 个字节之外,如果在解码期间计算的任何一个位置超出 26 个字节数据的范围,也会检测到不可纠正的错误。
生成多项式 g(x) 是一个产生 7 项余数的 8 项多项式。 g(x) = 0 的 7 个根是 α 的连续幂,在本例中为 α^0, α^1, ... α^6 == hex 01, 02, 04, 08, 10, 20, 40。
g(x) = (x-1)(x-α)(x-α^2)(x-α^3)(x-α^4)(x-α^5)(x-α^6)
因为加法==减法==异或,所以可以用加号代替减号:
g(x) = (x+1)(x+α)(x+α^2)(x+α^3)(x+α^4)(x+α^5)(x+α^6)
g(x) = (x+01)(x+02)(x+04)(x+08)(x+10)(x+20)(x+40)
g(x) = 01 x^7 + 7f x^6 + 7a x^5 + 9a x^4 + a4 x^3 + 0b x^2 + 44 x + 75
将 19 个字节的数据视为多项式 m(x)(m 代表消息)。通过乘以 x^7,19 个字节的数据用 7 个字节的零填充。然后将 26 字节多项式除以生成多项式,并将余数“减去”(异或或因为填充产生零,余数只是替换填充字节)到填充数据的低 7 字节。调用余数r(x),编码结果c(x):
r(x) = (m(x) x^7) % g(x)
c(x) = (m(x) x^7) - r(x)
再次注意减法是异或,与加法相同。
Wiki 上有一篇关于 Reed Solomon 的不错的文章:
http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
NASA 有一个教程:
http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19900019023.pdf
关于c++ - QR 码生成器的 Reed-Solomon 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615425/
我了解到 QRCODES 的字符数限制约为 4,290 个(约 4kb)。 这是真的吗?有什么方法可以增加它们的内存大小吗? 如果可能的话,我希望有更多空间:P 最佳答案 规范摘要如下: * ht
我越来越多地考虑使用 QR 码来传输二进制信息,例如图像,因为每当我演示我的应用程序时,它都会发生在 WiFi 或 3G/4G 无法工作的情况下。 我想知道是否可以将一个二进制文件分成多个部分,以便通
谁知道如何生成二维码?以及如何像这里一样装饰http://mojiq.kazina.com/ ? 最佳答案 试试这个教程 http://www.thonky.com/qr-code-tutorial/
我有以下 ZPL 代码,它打印带有字段数据 X50X-8091X-11111 的 QR 代码。 ^XA^PON^FWN^FO30,10^BQN,2,6^FDx50x-8091x-12345^FS^XZ
查找 Q 的其他正交列的最佳方法是什么?我已经计算了简化的 QR 分解,但需要完整的 QR 分解。 我认为有一个标准方法,但我一直找不到它。 您可能想知道为什么我需要完整的 Q 矩阵。我用它来将“自然
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我使用 2 个不同的生成器工具生成了 2 个二维码,但输入数据相同。他们生成了完全不同的二维码。如果我扫描代码我得到相同的数据,所以看起来没问题,但我不确定这种现象的原因。 任何的想法? 编辑: 例子
我正面临一个我想不太熟悉的问题(因为,在谷歌上搜索,我没有发现任何提示)。我正在尝试使用 TCPDF 提供的类生成 QR 码。几乎一切正常。我能够生成任何类型的网站链接等。 但是当我尝试为“发送电子邮
我正面临一个我想不太熟悉的问题(因为,在谷歌上搜索,我没有发现任何提示)。我正在尝试使用 TCPDF 提供的类生成 QR 码。几乎一切正常。我能够生成任何类型的网站链接等。 但是当我尝试为“发送电子邮
我正在制作一个二维码阅读器,我遇到了 zxing lib。我能够成功地将它合并到我的项目中。但是,在使用该应用程序时,我注意到它需要另一个应用程序(即 qr droid 应用程序)才能使用它,否则应用
根据wiki ,Google 2 因素身份验证 key 应该是 16 个字符的 Base32 字符串。当我解码谷歌发给我的二维码时,我发现它符合 Key format specified by goo
为什么使用相同的网址时某些二维码看起来会有所不同? 最佳答案 QR 码有 40 种版本(大小)、4 个纠错级别和 8 种屏蔽可能性,为任何给定输入提供总共 1280 个可能的 QR 码。 通常根据要存
我正在开发 iOS 上的 QR 码扫描仪应用程序,我得到了输出 AVCaptureOutput关于委托(delegate)方法captureOutput:didOutputMetadataObject
我有一个可以扫描二维码的应用。 场景: 前往应用 点击“扫描”按钮 打开相机扫描二维码 我的问题是:我可以使用 Appium“模拟”QR 吗? 最佳答案 如果您有 QR code. Scenario
我们已使用 Unity 5.3.4f1 中的 ZXing.dll 和 Vuforia Unity SDK 5.5.9 实现了 QR 检测功能。我们在 GameObject 上有一个 QR 检测脚本,该
Warning: sharing your TOTP seed with third-parties breaks the very basic assumption of multi-factor
我正在使用 PHP QR 码 ( http://phpqrcode.sourceforge.net/ ) 创建 QR 码。它运行良好,但现在我需要一个自由空间来放置其中心的自定义图形或 Logo 。我
QR 二维码中插入图片 二维码终于火了,现在大街小巷大小商品广告上的二维码标签都随处可见,而且大都不是简单的纯二维码,而是中间有个性图标的二维码。 我之前做了一个使用google开源项目zxin
我对二维码字符表有点疑惑。规范摘要如下: Numeric only Max. 7,089 characters (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) Alphanumer
我正在尝试为每个客户生成二维码。每个二维码都会给我创建一封电子邮件。我已经研究过并且我非常确定我了解如何最好地创建包含特定主题和正文的电子邮件。 创建用于创建电子邮件的 mailto 代码/脚本/行。
我是一名优秀的程序员,十分优秀!