首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >压缩基于Guid的字符串以在QR Code上写入

压缩基于Guid的字符串以在QR Code上写入
EN

Stack Overflow用户
提问于 2013-06-27 23:39:11
回答 4查看 2.9K关注 0票数 0

我正在用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个字符左右的方法,便于阅读。

任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

发布于 2013-08-05 03: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=)和分隔符:;之外,似乎不可能进行进一步的压缩。

票数 2
EN

Stack Overflow用户

发布于 2013-06-29 23:18:30

QR码根据所使用的字符范围使用不同的字符集对数据进行编码。如果你只使用ascii数字,它将使用一种不使用8位的编码。请参阅维基百科关于二维码的页面。

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

假设您可以控制解码器,您可以使用任何压缩库获取ascii数据并在编码前对其进行压缩,对二进制结果进行编码/解码,然后在解码器中对其进行解压缩。有许多技术可以尝试从压缩中获得最大收益。您也可以从非ascii编码开始,去掉像#=部件这样的冗余信息。

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

票数 0
EN

Stack Overflow用户

发布于 2017-11-15 05:02:06

如果你已经访问了一个数据库,你能创建一个表来支持它吗?如果是,则将该值存档并使用QR的ID。

1)简单模式: ID = bigint,标识(1000,1),设置为主键,Value = NVARCHAR(MAX)。是的,这有点夸张了,所以要根据口味进行修改。

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

3)创建另一个函数,当传入有效的ID号时,返回字符串值。

在很长一段时间内保持低于200个字符的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17347462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档