首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   alcoholpad · 110 天前 · 3759 次点击
    这是一个创建于 110 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  110 天前
    谢谢大家,我也是来 v2 找一下有没有爱因斯坦
    53 回复  |  直到 2019-08-22 11:57:30 +08:00
        1
    Kagari   110 天前
    IPv4 本来就是 2 进制啊,也就是说后 2 段本来就是 8bit+8bit 的
        2
    favourstreet   110 天前 via Android
    为你的 ip 后两段分配 0~1023 的编号,查表。
        3
    verbose   110 天前
    @Kagari 有没有办法用 10bit 来存储,值是多少无所谓,保证 ip 不同对应的 10bit 值也不同就可以了
        4
    ooxxcc   110 天前   ♥ 1
    不可行
        5
    zhzbql   110 天前   ♥ 3
    @verbose 10bit 只有 1024 个组合,16bit 有 65536 个组合,除非你们要存储的 ip 后两段不同组合小于等于 1024,不然怎么都会冲突。数学方面上的不可行
        6
    psychoo   110 天前 via Android
    没有
        7
    rrfeng   110 天前 via Android
    。。。。。我被你逗笑了
        8
    oxoxoxox   110 天前
    本来是 65536 个不同的值,你现在要求用 1024 个数来做索引,你说能不能做到。。。
        9
    Mistwave   110 天前 via iPhone
    信息熵了解一下
        10
    smdbh   110 天前
    需要配合掩码,有些是可以的
        11
    lihongming   110 天前 via iPhone
    这是在研究压缩率高达 98.5%的无损压缩算法?
        12
    whileFalse   110 天前
    你的目的是什么?如果是为了哈希,那可以直接丢弃高 6 位,只取低 10 位。
        13
    gstqc   110 天前 via Android
    IP 地址是稠密的,就是说你要完整表达那就是完全不可压缩的
        14
    catcalse   110 天前
    拿个小本本,写上 a1 代表 10.21.221.20 , 然后把 a1 存起来
        15
    msg7086   110 天前   ♥ 1
    难听的话我就不多说了,说出来伤人。好好说一句,阁下能不能学习一下计算机科学?
        16
    vjnjc   110 天前
    你真要存也可以,就像#14 说的那样.
    当然无法存全部的 65536 个数字。
        17
    YvesX   110 天前   ♥ 7
    如此循环下去,能把宇宙压缩成一个比特。
    这很禅。
        18
    will0404   110 天前
    @catcalse
    @vjnjc
    你再仔细想想?
        19
    vjnjc   110 天前
    @will0404 #18

    0 - > 10.21.0.0
    1 - > 10.21.0.1
    ......
    依次类推会有问题吗?
        20
    churchmice   110 天前 via Android
    @lihongming 你这算数水平
        21
    Raymon111111   110 天前
    做不到, 5l 说的很清楚了.
        22
    xiaopang132   110 天前
    @vjnjc

    1023 -> 10.21.3.254
    1024 -> 10.21.3.255

    10bit 就用完了.
        23
    Mohanson   110 天前 via Android
    @vjnjc 你再仔细想想
        24
    vjnjc   110 天前
    @xiaopang132 对啊,所以没法存全部的数啊。实际上从信息的角度来说 10bit 怎么存 16bit 的信息啊?
        25
    uhian   110 天前 via iPhone
    @Mohanson 你再仔细看看🐶
        26
    littlewing   110 天前 via iPhone
    不可能
        27
    tt0411   110 天前   ♥ 2
    所以只招相关专业的意义就在于此
        28
    pubby   110 天前
    @churchmice 没算错吧
        29
    liuminghao233   110 天前 via iPhone
    这要用魔法了吧
        30
    catcalse   110 天前
    10bit 想存整个宇宙。那谁都没办法
        31
    geelaw   110 天前 via iPhone   ♥ 3
    @lihongming #11 压缩率是按位数变化计算的,不是按位数的指数函数。

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

    ————

    用大学生的话来说是信息量的问题,用小学生的话来说这是非常简单的抽屉原理。
        32
    loading   110 天前 via Android   ♥ 1
    @geelaw 大哥,抽屉原理是啥,我好像没上过小学……
        33
    reus   110 天前
    有倒是有,有损的,要不要?
        34
    lights   110 天前 via iPhone
    上 32 进制吧,盲猜 32 进制的 10 位可以表示 16 进制的 16 位,233
        35
    lights   110 天前 via iPhone
    算一下
    32 的 10 次方是 2 的 5×15 次方
    16 的 16 次方是 2 的 4×16 次方
    刚好可以哦
        36
    skydev   110 天前
    我们就当楼主一时糊涂吧 散了散了
        37
    lights   110 天前 via iPhone
    算错了,32 位不行,64 位才可以……
        38
    q8515620   110 天前 via Android
    @lights 多少进制有区别吗?
        39
    shoco   110 天前
    IP 地址可以用一个 Int 来表示,32 个字节,4 个 Byte
        40
    cz5424   110 天前 via iPhone
    把 ip 扔到黑洞里面,就压缩了。...୧((〃•̀ꇴ•〃))૭⁺✧逃..
        41
    douglas1997   110 天前
    10bit 如果结构上不同的话可能可以吧,但其实本质上还是增大了信息空间
        42
    qwerthhusn   110 天前
    16 位有 65536 个组合
    10 位有 1024 个组合

    要用这 1024 个组合映射 65536 个组合。。。。。
        43
    xiaopang132   110 天前   ♥ 1
    @vjnjc 实际就是,没有办法..当然,在量子计算机面世的那一天就有办法了!
        44
    hahiru   110 天前
    11111111🔪11111111 中间一刀切
    8 个 8 个存还不用 10bit 呢。
    最后再拼接呗。
        45
    CrazyRundong   110 天前
    没有,信息熵是固有特性,压不了的
        46
    wssy   110 天前 via Android
    结合你的业务场景分析下,如果还有一些可以预知的信息或许可以利用上去
        47
    msg7086   110 天前
    @loading 或者叫鸽笼原理。
        48
    xuanbg   109 天前   ♥ 1
    单个 16bit 信息没办法用 10bit 存储。除非你的 IP 有 6bit 都是一样一样的
        49
    shyrock   109 天前
    这问题适合发在知乎,而不是 v2 程序员板块。。。
        50
    zifangsky   109 天前
    @lights #37 呃,你可以再好好想想这个问题……
        51
    VictorJing94   109 天前
    做不到好像,,,也许可以试着按规律分开存放...最后用的时候拼接一下
        52
    hu8245   109 天前
    压缩感知。不保证 100% OK
        53
    zhzbql   109 天前
    @lights 什么进制放到计算机底层存储都是 0 和 1,2 进制。占用的空间不会更小,只会更大
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1353 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 23:41 · PVG 07:41 · LAX 15:41 · JFK 18:41
    ♥ Do have faith in what you're doing.