我正在用html5/javascript开发一个phonegap应用程序。我有一个大约1000个字符的字符串,由以下格式的guids组成
1=0a0a8907-40b9-4e81-8c4d-d01af26efb78;2=cd4713339;3=Cjdnd;4=19120581-21e5-42b9-b85f-3b8c5b1206d9;5=hdhsfsdfsd;6=30a21580-48f3-40e8-87a3-fa6e39e6412f;.............
我必须将这个特定的字符串写入QR code。有没有什么有效的技术来压缩这个字符串并存储在二维码中。这个字符串生成的二维码太复杂,不容易被手机的二维码扫描仪读取。请建议将字符串的大小减少到200-250个字符左右的方法,便于阅读。
任何帮助都是非常感谢的。
发布于 2013-08-04 19:26:24
在您的问题中,您有以下示例数据:
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看起来像here中描述的版本4 UUID。我怀疑2、3和5实际上也可能是UUID?!
UUID的二进制表示为128位长,只需读取UUID的十六进制数字并转换为二进制,就可以相当简单地转换为这种表示。这为每个UUID提供了16个字节。
然而-由于UUID是版本4,它们是基于随机数据的,这有效地对抗了进一步的压缩(不同于表示UUID版本的几个比特)。因此,除了去掉计数器(1=
,2=
)和分隔符:;
之外,似乎不可能进行进一步的压缩。
发布于 2013-06-29 15:18:30
QR码根据所使用的字符范围使用不同的字符集对数据进行编码。如果你只使用ascii数字,它将使用一种不使用8位的编码。请参阅维基百科关于二维码的页面。
由于您的示例中的字符,例如小写,您将使用二进制编码,这对您的实际信息内容来说过于夸张了。
假设您可以控制解码器,您可以使用任何压缩库获取ascii数据并在编码前对其进行压缩,对二进制结果进行编码/解码,然后在解码器中对其进行解压缩。有许多技术可以尝试从压缩中获得最大收益。您也可以从非ascii编码开始,去掉像#=部件这样的冗余信息。
不过,我不能说这能给你买多少钱。
发布于 2017-11-14 21:02:06
如果你已经访问了一个数据库,你能创建一个表来支持它吗?如果是,则将该值存档并使用QR的ID。
1)简单模式: ID = bigint,标识(1000,1),设置为主键,Value = NVARCHAR(MAX)。是的,这有点夸张了,所以要根据口味进行修改。
2)创建一个函数,将您的字符串值添加到表中,并将ID作为字符串返回给二维码。
3)创建另一个函数,当传入有效的ID号时,返回字符串值。
在很长一段时间内保持低于200个字符的限制。
https://stackoverflow.com/questions/17347462
复制