把 Markdown 变成 Word:一条跨越 40 年的兼容链
Markdown 2004 年才出生,Word 的二进制 .doc 1983 年就有了。本文拆解两代格式之间的兼容链:OLE2、OOXML 与 Word 自家的 HTML 方言——mso 命名空间、条件注释与 @page 页面参数,缺一个命名空间 Word 就按普通网页降级打开。
Markdown 2004 年才出生,Word 的二进制 .doc 1983 年就有了。本文拆解两代格式之间的兼容链:OLE2、OOXML 与 Word 自家的 HTML 方言——mso 命名空间、条件注释与 @page 页面参数,缺一个命名空间 Word 就按普通网页降级打开。
口播录音里「哪段是停顿」不是听出来的,是算出来的。从 PCM 采样到 dBFS 刻度、50ms 窗 RMS、门限与最短静音时长、边缘 padding,再到 44 字节 RIFF 头的手写 WAV 编码——拆解静音切除的整条账本。
播放器能在两 GB 的文件里秒级定位画面,靠的是 MP4 的 box 索引树。从 size 与 type 两个通用字段讲起,逐层拆开 moov 里的 mvhd、tkhd、stsd、stts、stsz,解释手机竖拍的旋转藏在哪个字段、分片 fMP4 长什么样,以及为什么 MP4 压不小必须重编码。
把 .exe 改名成 .jpg 骗得过文件管理器,骗不过文件开头的魔数。本文拆解 PNG、PDF、ZIP 的签名字节、ZIP 家族的内部伪装、JPEG 里挂载的 EXIF/TIFF 结构,以及位置隐私是怎么随一张原图泄露出去的。
大量「在线加密」是 ECB 玩具:图案守恒、篡改无感。AES-GCM 把机密性和完整性绑在一起——CTR 加密、GHASH 认证,密文改一个字节就整体失败。本文拆解 GCM 机制、IV 纪律、PBKDF2 密钥派生与自描述密文格式。
一个 1987 年的格式至今撑着表情包与客服动图,靠的是 LZW 变长码、帧增量合成与交织扫描这三板斧。逐字节拆解 GIF 的文件结构、LZW 解码的 KwKwK 特例、disposal 语义与 NETSCAPE 循环扩展,并说明为什么抽帧工具要用零依赖纯 JS 从头实现。