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

除了 base64 URL 还有什么更短的适合编码二进制放在 URL 中的算法?

  •  1
     
  •   drymonfidelia · 92 天前 · 2073 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。
    13 条回复    2024-07-02 16:12:25 +08:00
    Puteulanus
        1
    Puteulanus  
       92 天前
    先用 gzip 之类的压一下再 base64 ?
    drymonfidelia
        2
    drymonfidelia  
    OP
       92 天前
    @Puteulanus 之前实验过如果原文不是很长,gzip 后会变得更长
    retanoj
        3
    retanoj  
       92 天前
    base64 、base32 、base16 、base58 、base91 、base92 、base36 、base62 、base85 、base128

    讲道理号越高,编码的“压缩”效果会越好吧
    wjr2012
        4
    wjr2012  
       92 天前
    存在数据库中,短哈希用于 URL ,访问时跳转到实际 URL 。
    rekulas
        5
    rekulas  
       92 天前
    据我所知没有,base64 是 3 字节>>4 字符,已经是目前效率最高的方式了,主要 ascii 码表里很多控制符和不可见字符串,只能做到 64 。。
    liuidetmks
        6
    liuidetmks  
       92 天前
    @Puteulanus gzip 被人投一些炸弹,服务器会爆炸吧
    可见字符也就这么多,base64 已经足够高效了。

    不要提前优化
    rekulas
        7
    rekulas  
       92 天前
    上面说的 base85 试了下确实存储效率更高,但是有些字符对 url 传输不友好,同理还有个 base91 的。。
    opengps
        8
    opengps  
       92 天前
    考虑换思路解决不?平常这类问题很多都是靠短网址来压缩长度实现二维码清晰度提高的
    UxwVI042kEc5pNx6
        9
    UxwVI042kEc5pNx6  
       92 天前
    @drymonfidelia zlib 可能比 gzip 好一点?
    gzip 至少要大于 56 个字符原文才比编码短;
    zlib 至少 40 个字符原文才比编码短。
    或者考虑混合使用? 30 个字符以内直接 base64 ,超过 30 用 zlib ,只是提供一下思路。
    BG7ZAG
        10
    BG7ZAG  
       92 天前
    base16 短一点,也没有/ = 符号
    Dragonphy
        11
    Dragonphy  
       92 天前 via Android
    https://sqids.org/
    非常短,只有 6 位字符
    yolee599
        12
    yolee599  
       91 天前
    base64 会将很多重复的,有规律的数据也编码了,可以将这部分数据进行压缩再编码,压缩算法可以使用 bsdiff ,Hdiffpatch ,Xdelta……这种差分算法
    augustheart
        13
    augustheart  
       91 天前
    短文本压缩,当然是 lz77 系列啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:22 · PVG 07:22 · LAX 16:22 · JFK 19:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.