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

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

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

5651 次点击
所在节点    程序员
53 条回复
Raymon111111
2019-08-21 13:07:14 +08:00
做不到, 5l 说的很清楚了.
xiaopang132
2019-08-21 13:07:32 +08:00
@vjnjc

1023 -> 10.21.3.254
1024 -> 10.21.3.255

10bit 就用完了.
Mohanson
2019-08-21 13:08:31 +08:00
@vjnjc 你再仔细想想
vjnjc
2019-08-21 13:09:25 +08:00
@xiaopang132 对啊,所以没法存全部的数啊。实际上从信息的角度来说 10bit 怎么存 16bit 的信息啊?
uhian
2019-08-21 13:11:16 +08:00
@Mohanson 你再仔细看看🐶
littlewing
2019-08-21 13:12:51 +08:00
不可能
tt0411
2019-08-21 13:15:24 +08:00
所以只招相关专业的意义就在于此
pubby
2019-08-21 13:17:06 +08:00
@churchmice 没算错吧
liuminghao233
2019-08-21 13:22:37 +08:00
这要用魔法了吧
catcalse
2019-08-21 13:22:51 +08:00
10bit 想存整个宇宙。那谁都没办法
geelaw
2019-08-21 13:35:39 +08:00
@lihongming #11 压缩率是按位数变化计算的,不是按位数的指数函数。

@YvesX #17 如此循环只能把宇宙压缩到 10 bits (逃

————

用大学生的话来说是信息量的问题,用小学生的话来说这是非常简单的抽屉原理。
loading
2019-08-21 13:40:00 +08:00
@geelaw 大哥,抽屉原理是啥,我好像没上过小学……
reus
2019-08-21 13:41:31 +08:00
有倒是有,有损的,要不要?
lights
2019-08-21 14:01:34 +08:00
上 32 进制吧,盲猜 32 进制的 10 位可以表示 16 进制的 16 位,233
lights
2019-08-21 14:07:12 +08:00
算一下
32 的 10 次方是 2 的 5×15 次方
16 的 16 次方是 2 的 4×16 次方
刚好可以哦
skydev
2019-08-21 14:16:33 +08:00
我们就当楼主一时糊涂吧 散了散了
lights
2019-08-21 14:18:50 +08:00
算错了,32 位不行,64 位才可以……
q8515620
2019-08-21 14:28:11 +08:00
@lights 多少进制有区别吗?
shoco
2019-08-21 14:54:23 +08:00
IP 地址可以用一个 Int 来表示,32 个字节,4 个 Byte
cz5424
2019-08-21 15:25:06 +08:00
把 ip 扔到黑洞里面,就压缩了。...୧((〃•̀ꇴ•〃))૭⁺✧逃..

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

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

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

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

© 2021 V2EX