手搓了一个 C++ constexpr 的 base64 编解码,写个测试才发现,实际使用中有好几个实现,处处都是细微差别。
boost::beast 最多只打一个 =,WinCrypt 返回的长度结果要理解好,AtlEnc 反而没有槽点。
有的地方想要 encoded c-string,有的地方想要 no padding。
为什么要手搓呢,前人为了实现 urlencode 硬生生是 stdencode 后再扫一遍改字符啊!这可是 JWT 鉴权会用的关键路径啊orz
用到的地方颇多,每次改兼容跑测试,重新构建三十分钟起步,也幸亏有这些测试才能发现问题。