【发布时间】:2019-05-24 09:28:49
【问题描述】:
我正在尝试通过铱星网络传输字符串,发送数据的成本非常高。我想知道是否有办法压缩大字符串,例如:
{"packet":01,"reporting time":1500, "altitude":6500,"latitude":0,"longitude": 0,"ballast":34,"parachute":0}
变成一个更小的字符串,例如:
f5fk43d2
.该过程必须是可逆的,以便可以在另一端解码和读取数据。这可能吗,如果可以,我该怎么做。
我已经尝试过 j.w.r 的这个答案:Shortening a string in Java,但它似乎是不可逆转的。它确实将一个大字符串转换为一个较小的字符串。
该过程必须产生一个小于原始字符串的字符串。
感谢任何帮助!
【问题讨论】:
-
您可以查看一个常见的压缩方案,例如 deflate(用于 .zip 文件),它在 Java 的标准库 (
Deflater) 中有一个实现 -
你有没有考虑过使用MessagePack之类的东西?或者只是简单地通过 zip 压缩压缩文本并将其转换为 base64?
-
CBOR 可能是一个选项。如果您不想发送二进制文件,则使用 base64
-
如果引号中的部分可能取值的数量有限,并且还知道每个冒号后面的部分是一定范围内的数字;那么你可以利用它用更短的字符串来表达它。
标签: java encoding compression transmission