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

7 年前端用 base64 居然还要用第三方工具?

  •  
  •   xieqiqiang00 · 2023-05-05 13:40:06 +08:00 · 1808 次点击
    这是一个创建于 571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小菊花妈妈课堂开课啦

    -浏览器按 F12 打开控制台

    -输入 btoa("[email protected]")

    -回车

    嘿嘿

    yuzhang98
        1
    yuzhang98  
       2023-05-05 13:51:14 +08:00
    v2ex polish 插件自带转换 base64
    Valid
        2
    Valid  
       2023-05-05 13:57:52 +08:00   ❤️ 1
    什么,居然还要打开浏览器,我们都心算
    superares
        3
    superares  
       2023-05-05 14:13:12 +08:00
    问 GPT-4 也能得到结果
    Tamamopoi
        4
    Tamamopoi  
       2023-05-05 14:29:24 +08:00
    学到了,现在的我已超越 7 年前端强者!
    lqzhgood
        5
    lqzhgood  
       2023-05-05 15:03:55 +08:00
    btoa 这到底是什么的缩写? 我每次记成 base64 To ASCII ,然后就和 atob 弄反了~
    xieqiqiang00
        6
    xieqiqiang00  
    OP
       2023-05-05 15:07:25 +08:00
    @lqzhgood b 是二进制
    lqzhgood
        7
    lqzhgood  
       2023-05-05 15:16:16 +08:00
    @xieqiqiang00 那也这太不语义化了…… 说好的转 base64 的
    pursuer
        8
    pursuer  
       2023-05-05 15:24:57 +08:00
    我觉得这组 API 有点小问题,应该支持接收 ArrayBuffer 的,但实际还是要转。
    DingJZ
        9
    DingJZ  
       2023-05-05 15:50:09 +08:00
    那个帖子是不是被删了,看完还想回味一下找不到了
    jifengg
        10
    jifengg  
       2023-05-05 16:02:47 +08:00
    当前的 btoa 和 atob 对 中文(或者说非 ascii )不太友好
    HuskyYellow
        11
    HuskyYellow  
       2023-05-05 17:04:44 +08:00   ❤️ 1
    @DingJZ 没删,就是找不到了 https://v2ex.com/t/937283
    zagfai
        12
    zagfai  
       2023-05-05 17:23:48 +08:00
    base64 -d
    codehz
        13
    codehz  
       2023-05-05 20:23:56 +08:00   ❤️ 2
    @jifengg @pursuer 实际上那 b 是 binarystring ,是在没有 typedarray ( uint8array, arraybuffer )时代的二进制 blob 替代品,你看上去是一个文本,它实际上可以存 0-255 所有的字符,不是仅限于 ascii ,也可以包含 utf-16 禁止的字符序列(反过来你即使 atob 把 utf-16 的中文 base64 结果转换为这个 binarystring 也是不能得到正确中文的)。
    可以说是非常之奇妙,这玩意的构造方法就是用 String.fromCharCode ,古代的主流用法是 String.fromCharCode.apply(undefined, [1,2,3]) 来从数组里构造一整串 binarystring (用这个方法弄出来的字符串保证是 binarystring ,在一些优化过的引擎里不会用两倍空间存储)
    因为过于魔法而难以进一步优化(比如一不小心就会退化成普通 string ,占用两份空间),所以 arraybuffer 才会被发明以取代 binarystring
    (然后因为 arraybuffer 不能轻易扩展长度,最近又在搞 resizable arraybuffer )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1629 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.