Sam*_*ell 5 vb.net compression
我有一个超过800个字符的数据字符串,我正在尝试压缩以用于QR码(我想要至少50%,但如果我把它减少到不到七百,可能会很高兴) .这是我正在尝试压缩的示例字符串,包含841个字符:
+hgoSuJm2ecydQj9mXXzmG6b951L2KIl0k9VGzIEtLztuWO2On9rt7DUlH0lXzG4iJ1yK0fA
97mDyclKSttIZXOxSPBf85LEN4PUUqj65aio5qwZttZSZ64wpnMFg/7Alt1R39IJvTmeYfBm
Tuc1noMMcknlydFocwI8/sk2Sje5MR/nYNX0LPkQhzyi5vFJdrndqAgXYULsYrB3TJDAwvgs
Kw9C5EJnrlqcb21zg17O2gU/C8KY0pz9RPzUl1Sb0rCP8iZCeis4YbQ5tuUppOfnO/X0Mosv
SOQJ/bF9juKW8ocnQvNjsNxGV1gPkWWtiU2Old7Qm7FLDqL6kQKrq356yifs0NiMVGdvAg32
eugewuttCugoZASYOpQdwPu1jMxVO1fzF3zEy5w6tDlcfA2DZwa+un9/k8XZWAO/KVExy68q
UtVRQxsIOKgpl/2tNw5DBAKbykKIkmizbsA2xtzqnYqld4kOdNMJh3YjlqWF9Bt8MZo7a+Q6
jgayr2rjpyIptc599DGtvp68ZNQ64TKNmiMnnyGMo3E+xW34G3RrsYnHGm+xJoLKoOJhacDu
oZke1ycJgQv+Y61WPrvtFOVBxV5rvSzO0+8px5AWN3uCrrw1RmT5N14IVhh6BOtRjsifqIB2
dAKxzBNsvbXm1SzkuyqYiMnp5ivy3m2mPwc9GLsykx0FRIkhCYO8ins9E5ot9QvVnE155MFA
8FVwsP5uNdOF4EzQS2/h2QK3zb5Yq4Nftlo605Dd5vuVN/A7CUN38DaAKBxDKgqDzydfQnZw
R0hTfMHNLgBJKNDSpz2P6almGlUJtXT6IYmzuU2Iaion8ePG
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下三个库:
我遇到了压缩实际上使字符串更长的问题.我的理解是DeflateStream的开销最小,但它仍在添加字符.使用DotNetZip,我告诉它使用最大压缩:
Imports Ionic.Zlib
Shared Function CompressData(data As Byte()) As Array
Dim msCompressed As MemoryStream = New MemoryStream
' I'm not sure if the last parameter on this next function should be
' true (for LeaveOpen), but it doesn't seem to affect it either way.
Dim deflated As DeflateStream = New DeflateStream(msCompressed, _
CompressionMode.Compress, CompressionLevel.BestCompression, True)
' Write data to compression stream (which is linked to the memorystream)
deflated.Write(data, 0, data.Length)
deflated.Flush()
deflated.Close()
Return msCompressed.ToArray
End Function
Run Code Online (Sandbox Code Playgroud)
我只是认为这会变得更糟,因为我会有更多的数据.对于这个长度的字符串,是否有更好的压缩算法?压缩通常只适用于较长的字符串吗?不幸的是,数据是这样的,我不能使用替代字符来处理数据.
此外,我能够使用字母数字编码的QR码,还是我必须使用二进制?根据http://www.qrme.co.uk/qr-code-forum.html?func=view&catid=3&id=324,我认为我不能,但我想确定一下.
谢谢你的帮助!
乍一看,您似乎正在尝试通过以下过程获取一些数据并将其转换为二维码:
--> 加密 --> base64 编码 --> 压缩 --> 制作二维码。
我建议改用这个过程:
--> 压缩 --> 加密 --> 制作二维码。
当您想要同时加密和压缩时,几乎每个人都建议先压缩然后加密。(因为加密对于压缩数据和未压缩数据的效果一样好。但是压缩通常会使明文变短而加密文件变长。有关更多详细信息,请参阅:“我可以压缩加密文件吗? ”“压缩然后加密,或者反之-反之亦然? " "编写压缩和加密" "压缩然后加密磁带" "加密消息然后压缩它或相反更好?哪个提供更高的安全性? " "在 Windows 上压缩和加密文件" "加密和压缩“”像zip和7z这样的加密压缩容器是先压缩还是加密? ”“压缩和加密时,应该先压缩,还是先加密? ”等等)
“我可以对 QR 码使用字母数字编码,还是必须使用二进制?”
大多数加密算法都会产生二进制输出,因此最简单的方法是将其直接转换为二进制编码的 QR 码。我想您可以以某种方式将加密数据转换为 QR 字母数字编码可以处理的数据,但为什么呢?
“有没有更好的压缩算法”
对于加密数据来说,不行。无论您使用什么算法,(几乎肯定)不可能压缩加密良好的数据。
如果按照建议先压缩然后加密,则各种压缩算法的有效性取决于输入数据的特定类型,而不取决于压缩后对其执行的操作。
您的输入数据是什么类型的数据?
假设您的输入数据缺少 ASCII 文本,也许您可以使用“真正简单的短字符串压缩”“短文本字符串的最佳压缩算法”“ C 中的 ASCII 字符串压缩”中提到的压缩算法之一Twitter 文本压缩挑战”。
另一方面,如果您的输入数据是某种照片,也许您可以使用“ Twitter 图像编码挑战”中提到的众多压缩算法之一。
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |