【问题标题】:What is the formula to calculate a QR Code's maximum data?计算二维码最大数据的公式是什么?
【发布时间】:2014-07-08 04:40:06
【问题描述】:

我已经在 Google 上搜索并阅读了很多关于 QR 码和基于各种设置可以使用的最大数据,所有这些都采用表格格式。我似乎找不到任何给出公式或正确解释这些值的计算方式的东西。

我想做的是:

  • 向用户展示一个表单,允许他们选择格式、EC 和版本。
  • 然后他们可以输入一些数据并生成二维码。

完成交易。这部分很简单。

我想添加一个“剩余字符数”,以便他们(用户)可以看到他们可以输入多少数据,以及这些属性对 QR 的存储容量有什么影响代码。

有人知道我在哪里可以找到公式吗?还是需要购买ISO 18004:2006

【问题讨论】:

  • 有点,但肯定有人使用公式来填写提到的表格。我喜欢这个公式,似乎比拥有一个大的硬编码数组要好得多。
  • 不过,一张桌子是最简单的方法。当然,除非您的应用打算在内存受限的环境中运行,但这里似乎并非如此。

标签: c# qr-code


【解决方案1】:

计算可以放入二维码的数据量的公式将非常复杂,更不用说它需要一些近似值才能进行计算。该公式必须根据其版本计算 QRCode 中专用于数据的模块数量,然后计算用于纠错的码字(即 8 个模块的集合)的数量。

要计算将用于数据的模块数量,您需要知道将用于功能模式的模块数量。虽然这对于三个查找器模式、时间或版本/格式信息来说不是问题,但对齐模式会有问题,因为它们的数量取决于 QRCode 的版本,这意味着您无论如何都必须使用表格那一点。

对于第二部分,我不得不说我不知道​​如何根据纠错能力来计算纠错码字的数量。出于某种原因,使用了更多的纠错码字,应该与纠错能力相匹配,例如,6-H QRCode 可以纠正高达 32.6% 的数据,而不是 H 校正级别设置的 30% .

在任何情况下,如您所见,公式的实现都非常复杂。使用已经建议的表格可能是您能做的最好的事情。

【讨论】:

    【解决方案2】:

    我在 90 年代为电装公司编写了 QR 码的原始 AIM 规范,并且还是 ISO/IEC 18004 标准的两个版本的项目编辑。对于生产代码打印软件的人来说,使用查找表而不是从公式计算容量被认为要容易得多 - 这不是一件容易的工作,因为在将文本解析为时必须迭代地考虑几个自变量被编码以最小化其比特长度,以实现最小符号。最关键的因素是数据中字符的混合、数字、字母数字、汉字数据的子串的顺序和长度,以及每次字符集更改所需的开销,然后是所需的纠错级别。我确实为此制作了一个指导部分,该部分包含在 ISO 标准中。

    【讨论】:

      【解决方案3】:

      存储由 QR 模式和您正在使用的版本/类型计算。更具体地说,计算基于字符的“可压缩性”以及允许 qr 生成器对存在的内容使用什么算法。

      更多信息可以找到http://en.wikipedia.org/wiki/QR_code#Storage

      【讨论】:

      • 是的,我很清楚在计算存储空间时会考虑输入格式、纠错和版本。我想知道它是如何计算的。即当我有输入的数字、EC 的 L 和版本的 40 时,我如何获得 7,089 作为最大计数。
      • 没有冒犯的意思,计算是基于字符的“可压缩性”以及允许 qr 生成器对存在的内容使用什么算法。
      • 如前所述,我很清楚哪些变量用于计算存储。我想知道如何在我的代码中进行该计算,以便我可以说,“您可以根据当前的输入格式、纠错和版本存储 x 多个字符”。维基百科没有告诉我如何进行计算,否则我不会问。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多