V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
alcoholpad
V2EX  ›  程序员

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

  •  
  •   alcoholpad · Aug 21, 2019 · 6560 views
    This topic created in 2453 days ago, the information mentioned may be changed or developed.

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

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

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

    1023 -> 10.21.3.254
    1024 -> 10.21.3.255

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

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

    ————

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

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