业务场景:将 ip 地址,如 10.21.221.20 ,后两段( 221.20 )截取下来转成二进制。但是只能有 10bit 的存储空间可以存储,可行吗?有什么方式可以转换?保证唯一。避免如 22120 和 22121 转换后 10bit 是一样的。
业务场景:将 ip 地址,如 10.21.221.20 ,后两段( 221.20 )截取下来转成二进制。但是只能有 10bit 的存储空间可以存储,可行吗?有什么方式可以转换?保证唯一。避免如 22120 和 22121 转换后 10bit 是一样的。
|
KagariAug 21, 2019
1
IPv4 本来就是 2 进制啊,也就是说后 2 段本来就是 8bit+8bit 的
|
|
favourstreetAug 21, 2019 via Android
2
为你的 ip 后两段分配 0~1023 的编号,查表。
|
|
4
不可行
|
|
5
@verbose 10bit 只有 1024 个组合,16bit 有 65536 个组合,除非你们要存储的 ip 后两段不同组合小于等于 1024,不然怎么都会冲突。数学方面上的不可行
|
|
psychooAug 21, 2019 via Android
6
没有
|
|
rrfengAug 21, 2019 via Android
7
。。。。。我被你逗笑了
|
|
oxoxoxoxAug 21, 2019
8
本来是 65536 个不同的值,你现在要求用 1024 个数来做索引,你说能不能做到。。。
|
|
MistwaveAug 21, 2019 via iPhone
9
信息熵了解一下
|
|
smdbhAug 21, 2019
10
需要配合掩码,有些是可以的
|
|
lihongmingAug 21, 2019 via iPhone
11
这是在研究压缩率高达 98.5%的无损压缩算法?
|
|
whileFalseAug 21, 2019
12
你的目的是什么?如果是为了哈希,那可以直接丢弃高 6 位,只取低 10 位。
|
|
0ZXYDDu796nVCFxqAug 21, 2019 via Android
13
IP 地址是稠密的,就是说你要完整表达那就是完全不可压缩的
|
|
catcalseAug 21, 2019
14
拿个小本本,写上 a1 代表 10.21.221.20 , 然后把 a1 存起来
|
|
15
难听的话我就不多说了,说出来伤人。好好说一句,阁下能不能学习一下计算机科学?
|
|
vjnjcAug 21, 2019
16
你真要存也可以,就像#14 说的那样.
当然无法存全部的 65536 个数字。 |
|
17
如此循环下去,能把宇宙压缩成一个比特。
这很禅。 |
|
churchmiceAug 21, 2019 via Android
20
@lihongming 你这算数水平
|
|
Raymon111111Aug 21, 2019
21
做不到, 5l 说的很清楚了.
|
|
xiaopang132Aug 21, 2019
22
|
|
vjnjcAug 21, 2019
24
@xiaopang132 对啊,所以没法存全部的数啊。实际上从信息的角度来说 10bit 怎么存 16bit 的信息啊?
|
|
littlewingAug 21, 2019 via iPhone
26
不可能
|
|
27
所以只招相关专业的意义就在于此
|
|
pubbyAug 21, 2019
28
@churchmice 没算错吧
|
|
liuminghao233Aug 21, 2019 via iPhone
29
这要用魔法了吧
|
|
catcalseAug 21, 2019
30
10bit 想存整个宇宙。那谁都没办法
|
|
31
@lihongming #11 压缩率是按位数变化计算的,不是按位数的指数函数。
@YvesX #17 如此循环只能把宇宙压缩到 10 bits (逃 ———— 用大学生的话来说是信息量的问题,用小学生的话来说这是非常简单的抽屉原理。 |
|
reusAug 21, 2019
33
有倒是有,有损的,要不要?
|
|
lightsAug 21, 2019 via iPhone
34
上 32 进制吧,盲猜 32 进制的 10 位可以表示 16 进制的 16 位,233
|
|
lightsAug 21, 2019 via iPhone
35
算一下
32 的 10 次方是 2 的 5×15 次方 16 的 16 次方是 2 的 4×16 次方 刚好可以哦 |
|
skydevAug 21, 2019
36
我们就当楼主一时糊涂吧 散了散了
|
|
lightsAug 21, 2019 via iPhone
37
算错了,32 位不行,64 位才可以……
|
|
shocoAug 21, 2019
39
IP 地址可以用一个 Int 来表示,32 个字节,4 个 Byte
|
|
cz5424Aug 21, 2019 via iPhone
40
把 ip 扔到黑洞里面,就压缩了。...୧((〃•̀ꇴ•〃))૭⁺✧逃..
|
|
douglas1997Aug 21, 2019
41
10bit 如果结构上不同的话可能可以吧,但其实本质上还是增大了信息空间
|
|
qwerthhusnAug 21, 2019
42
16 位有 65536 个组合
10 位有 1024 个组合 要用这 1024 个组合映射 65536 个组合。。。。。 |
|
43
@vjnjc 实际就是,没有办法..当然,在量子计算机面世的那一天就有办法了!
|
|
hahiruAug 21, 2019
44
11111111🔪11111111 中间一刀切
8 个 8 个存还不用 10bit 呢。 最后再拼接呗。 |
|
h5h6l3otQK8vLTYvAug 21, 2019
45
没有,信息熵是固有特性,压不了的
|
|
wssyAug 21, 2019 via Android
46
结合你的业务场景分析下,如果还有一些可以预知的信息或许可以利用上去
|
|
48
单个 16bit 信息没办法用 10bit 存储。除非你的 IP 有 6bit 都是一样一样的
|
|
shyrockAug 22, 2019
49
这问题适合发在知乎,而不是 v2 程序员板块。。。
|
|
VictorJing94Aug 22, 2019
51
做不到好像,,,也许可以试着按规律分开存放...最后用的时候拼接一下
|
|
hu8245Aug 22, 2019
52
压缩感知。不保证 100% OK
|