0

我正在用 html5/javascript 开发一个 phonegap 应用程序。我有一个大约 1000 个字符的字符串,由以下格式的 guid 组成

1=0a0a8907-40b9-4e81-8c4d-d01af26efb78;2=cd4713339;3=Cjdnd;4=19120581-21e5-42b9-b85f-3b8c5b1206d9;5=hdhsfsdfsd;6=30a215818fa38f3-e39e6-6 …………………………………………………………………………

我必须将此特定字符串写入QR 码。是否有任何工作技术可以压缩此字符串并存储在 QR 码中。该字符串生成的二维码过于复杂,手机二维码扫描器不易读取。请建议将字符串大小减少到大约 200-250 个字符的方法,以便于阅读。

任何帮助表示赞赏。

4

4 回答 4

2

在您的问题中,您有以下示例数据:

1=0a0a8907-40b9-4e81-8c4d-d01af26efb78;2=cd4713339;3=Cjdnd;
4=19120581-21e5-42b9-b85f-3b8c5b1206d9;5=hdhsfsdfsd;6=30a21
580-48f3-40e8-87a3-fa6e39e6412f; ..............

其中 1、4 和 6 看起来像这里描述的版本 4 UUID 。我怀疑 2、3 和 5 实际上也可能是 UUID?!

UUID 的二进制表示为 128 位长,只需读取 UUID 的十六进制数字并转换为二进制,它们应该相当简单地转换为这种表示。这为每个 UUID 提供 16 个字节。

但是- 由于 UUID 是第 4 版,它们基于随机数据,这实际上对抗进一步压缩(除了代表 UUID 版本的少数位)。因此,除了摆脱计数器 ( 1=, 2=) 和分隔符:之外;,似乎没有进一步的压缩是可能的。

于 2013-08-04T19:26:24.440 回答
0

QR 码根据使用的字符范围使用不同的字符集对数据进行编码。IOW,如果您仅使用 ascii 数字,它将使用不使用每个数字 8 位的编码。请参阅有关 QR 码的维基百科页面。

由于您示例中的字符,例如小写,您将使用二进制编码,这对于您的实际信息内容来说太过分了。

假设您可以控制解码器,您可以使用任何压缩库来获取您的 ascii 数据并在编码之前对其进行压缩,对二进制结果进行编码/解码,然后在解码器中对其进行解压缩。尝试充分利用压缩的技术有很多。您还可以从非 ascii 编码开始,并消除像 #= 部分这样的冗余信息。

不过,不能说这会给你买多少。

于 2013-06-29T15:18:29.797 回答
0

您不需要整个指南;这可以消除 2^128 条记录中除一条以外的所有记录(足以多次处理地球上的每一位数字信息)。

您需要消除多少条记录?可能远少于 40 亿,对吧?那是 2^32,所以只需取 guid 的前 1/4,您的 1000 个字符就可以达到 250 个。

于 2019-12-09T13:11:24.990 回答
0

如果您已经可以访问数据库,您可以创建一个表来支持它吗?如果是这样,请将值存档并使用 QR 的 ID。

1) 简单模式:ID = bigint 和 Identity (1000,1) 并设置为主键,Value = NVARCHAR(MAX)。是的,这有点矫枉过正,所以修改口味。

2) 创建一个函数,将您的字符串值添加到表中,并将 ID 作为 QR 码的字符串返回。

3) 创建另一个函数以在传递有效 ID 号时返回字符串值。

很长时间保持在 200 个字符的限制以下。

于 2017-11-14T21:02:06.073 回答