如何确定字符串的大小并对其进行压缩
我目前正在使用 C# 开发一个使用 Amazon SQS 的应用程序 消息的大小限制为 8kb。
我有一个类似的方法:
public void QueueMessage(string message)
在这个方法中,我想首先压缩消息(大多数消息以 json 形式传入,因此已经相当小)
如果压缩的字符串仍然大于 8kb,我会把它存储在S3中。
我的问题是:
如何轻松测试字符串的大小,以及压缩它的最佳方法是什么? 我并不是在寻求尺寸的大幅减小,只是寻求一些美好而简单的东西 - 并且易于对另一端进行减压。
I'm currently developing an application in C# that uses Amazon SQS
The size limit for a message is 8kb.
I have a method that is something like:
public void QueueMessage(string message)
Within this method, I'd like to first of all, compress the message (most messages are passed in as json, so are already fairly small)
If the compressed string is still larger than 8kb, I'll store it in S3.
My question is:
How can I easily test the size of a string, and what's the best way to compress it?
I'm not looking for massive reductions in size, just something nice and easy - and easy to decompress the other end.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要知道字符串的“大小”(以 kb 为单位),我们需要知道编码。如果我们假设 UTF8,那么它(不包括 BOM 等)如下所示(但如果不是 UTF8,则交换编码):
重新打包;我建议使用 UTF8 的 GZIP,如果必须是字符串,则可以选择后跟 base-64:
To know the "size" (in kb) of a string we need to know the encoding. If we assume UTF8, then it is (not including BOM etc) like below (but swap the encoding if it isn't UTF8):
Re packing it; I would suggest GZIP via UTF8, optionally followed by base-64 if it has to be a string:
给这个函数解压字节。我能想到的最好的办法是
Give unzip bytes to this function.The best I could come up with was