有没有办法将我的120位数据转换成32位,并在从这32位中取回我的120位数据后?
答案 0 :(得分:2)
它叫做无损压缩,你一定要读一下tutorial。
话虽如此,您可以对任何数据进行的压缩高度依赖于数据中的信息冗余。所以你可以把它降到32位,但是没有保证。
答案 1 :(得分:1)
有一个数学证据表明这种变换不可能“永远”,它被称为鸽子洞原则。
http://en.wikipedia.org/wiki/Pigeonhole_principle
基本上,如果你可以将任何 120位的序列压缩成32位,你可以递归地将整个网络压缩成32位。
现在,这并不意味着永远不可能:您可以将一些120位序列压缩成32位,前提是您事先知道要压缩的序列的某些属性。
例如,IP可以是列表的一部分,而不是“任何”可能的值。列表中的索引将花费少于32位。对于端口号,它可能不是完全随机的,您可以将选择减少为预定义数字列表。如果只有4个端口可用,则只需要2位(而不是16位)。
对于时间戳,这要困难得多。这取决于测量的精度。 一种可能性是使用“delta”值(作为+ N加到已知的“base”)。 可用于时间戳的位数取决于先前字段已使用的位数。
因此可能可以将其压缩为32位,但不能保证。这在很大程度上取决于您必须考虑的各种情况。
答案 2 :(得分:0)
无法将每个 120位数据压缩为32位数据并将其解压缩回原始数据。但是,您只能无损压缩部分。