正在压缩基于Guid的字符串以写入QR码



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

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太复杂,手机的QR扫描仪不容易读取。请建议将字符串大小减少到200-250个字符左右的方法,这样可以很容易地读取。

感谢您的帮助。

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

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=)和分离器(;)之外,似乎不可能进行进一步的压缩。

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

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

假设你可以控制解码器,你可以使用任何压缩库来获取你的ascii数据,并在编码前对其进行压缩,对二进制结果进行编码/解码,然后在解码器中解压缩。有很多技术可以尝试最大限度地利用压缩。您也可以从非ascii编码和elminate冗余信息开始,如#=部分。

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

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

1) 简单模式:ID=bigint,带有Identity(1000,1),并设置为主键,Value=NVARCHAR(MAX)。是的,这有点过头了,所以根据口味进行修改。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新