有没有什么算法可以将 16bit 压缩到 10bit 来存储?

2019-08-21 11:42:30 +08:00
 alcoholpad

业务场景:将 ip 地址,如 10.21.221.20 ,后两段( 221.20 )截取下来转成二进制。但是只能有 10bit 的存储空间可以存储,可行吗?有什么方式可以转换?保证唯一。避免如 22120 和 22121 转换后 10bit 是一样的。

5639 次点击
所在节点    程序员
53 条回复
Kagari
2019-08-21 11:54:18 +08:00
IPv4 本来就是 2 进制啊,也就是说后 2 段本来就是 8bit+8bit 的
favourstreet
2019-08-21 12:00:56 +08:00
为你的 ip 后两段分配 0~1023 的编号,查表。
verbose
2019-08-21 12:01:22 +08:00
@Kagari 有没有办法用 10bit 来存储,值是多少无所谓,保证 ip 不同对应的 10bit 值也不同就可以了
ooxxcc
2019-08-21 12:03:29 +08:00
不可行
zhzbql
2019-08-21 12:05:07 +08:00
@verbose 10bit 只有 1024 个组合,16bit 有 65536 个组合,除非你们要存储的 ip 后两段不同组合小于等于 1024,不然怎么都会冲突。数学方面上的不可行
psychoo
2019-08-21 12:13:42 +08:00
没有
rrfeng
2019-08-21 12:15:35 +08:00
。。。。。我被你逗笑了
oxoxoxox
2019-08-21 12:21:37 +08:00
本来是 65536 个不同的值,你现在要求用 1024 个数来做索引,你说能不能做到。。。
Mistwave
2019-08-21 12:24:27 +08:00
信息熵了解一下
smdbh
2019-08-21 12:29:41 +08:00
需要配合掩码,有些是可以的
lihongming
2019-08-21 12:40:31 +08:00
这是在研究压缩率高达 98.5%的无损压缩算法?
whileFalse
2019-08-21 12:47:41 +08:00
你的目的是什么?如果是为了哈希,那可以直接丢弃高 6 位,只取低 10 位。
gstqc
2019-08-21 12:48:22 +08:00
IP 地址是稠密的,就是说你要完整表达那就是完全不可压缩的
catcalse
2019-08-21 12:48:28 +08:00
拿个小本本,写上 a1 代表 10.21.221.20 , 然后把 a1 存起来
msg7086
2019-08-21 12:51:35 +08:00
难听的话我就不多说了,说出来伤人。好好说一句,阁下能不能学习一下计算机科学?
vjnjc
2019-08-21 12:52:43 +08:00
你真要存也可以,就像#14 说的那样.
当然无法存全部的 65536 个数字。
YvesX
2019-08-21 12:54:31 +08:00
如此循环下去,能把宇宙压缩成一个比特。
这很禅。
will0404
2019-08-21 12:56:19 +08:00
@catcalse
@vjnjc
你再仔细想想?
vjnjc
2019-08-21 12:59:03 +08:00
@will0404 #18

0 - > 10.21.0.0
1 - > 10.21.0.1
......
依次类推会有问题吗?
churchmice
2019-08-21 13:03:40 +08:00
@lihongming 你这算数水平

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/593783

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX