我需要使用连接的对象属性来生成QR码。由于这些字符串可能很长,因此我想知道在我的字符串长度介于25到100+个字符之间时应使用哪种压缩算法。
提前感谢您的帮助,
Jerec
提前感谢您的帮助,
Jerec
我假设你在存储字符串之前会使用压缩,因此这些QR码将无法被任何客户端读取,必须是你编写的应用程序(因为你正在存储具有未知编码的字符,客户端无法解码)。
不要将长字符串压缩并存储在QR码中,而是让您的应用程序创建一个URI(类似于GUID或URL),当您的应用程序解码该URI时,它会查找您想要存储在QR码中的所有值(未压缩)。然后您的应用程序可以以任何方式查找格式。
例如,假设您的持久性存储是XML文件,但它可以是任何东西:
<URI = "http://mydomain.com/790C9704-8C61-435F-991D-CDBB5767AA3D">
<MyElement>14523</MyElement>
<MyElement>67548</MyElement>
...
<MyElement>46167</MyElement>
</URI>
QR码编码为:"http://mydomain.com/790C9704-8C61-435F-991D-CDBB5767AA3D",可以查找相应的值。
编码QR码所用的算法取决于您编码的数据类型。请参见http://www.swetake.com/qr/qr1_en.html。
例如,如果您知道每个ID都具有相同数量的数字,并且因此可以将它们直接连接而不使用标点符号,则可以将它们编码为纯数字,每三个字符将使用10位。
如果您需要某种分隔符,如果使用了“0-9A-Z $%*+-./:”中的内容,则仍将保持字母数字,并在11位中获得2个字符。
如果给定任意数据(请注意,这包括任何小写字母:上面的列表不包括小写字母),则将使用8位每个字符。
因此,仅数字最终会比原始数据小60%。