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

2019 年 8 月 21 日
 alcoholpad

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

6651 次点击
所在节点    程序员
53 条回复
Raymon111111
2019 年 8 月 21 日
做不到, 5l 说的很清楚了.
xiaopang132
2019 年 8 月 21 日
@vjnjc

1023 -> 10.21.3.254
1024 -> 10.21.3.255

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

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

————

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

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

https://v2ex.xtra.eu.org/t/593783

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

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

© 2021 V2EX