比Base64更好用的Base62编码

原创
2017/08/04 11:24
阅读数 1.6W

最近有个需求要在URL传一段二进制数据,首先想到的就是用Base64编码一下,但是注意到Base64里面有两个特殊符号“+”和“/”,在URL中需要编码一下不太方便。(补充:另一个方案是使用“-”和“_”替换,commons-codec里的Base64.encodeBase64URLSafeString())

干脆自己改一下了,反正算法也不复杂,先用GOP设计一下(Google Oriented Programming)!果然有现有的代码,改进后的算法叫Base62,使用还挺广泛,是我孤陋寡闻了!

Base62和Base64相比唯一的区别就是少了两个特殊符号。另外标准的Base64最后需要用=补位,但这是一个约定,自定义算法就可以去掉。总之Base62就是一个改掉了Base64所有缺点的算法,唯一的不足是因为码空间小了,会多占用1/32空间。

例子:

原文:但使龙城飞将在 不教胡马度阴山

Base64:5L2G5L2/6b6Z5Z+O6aOe5bCG5ZyoIOS4jeaVmeiDoemprOW6pumYtOWxsQ==

Base62:LpaUdHtXIzYCI3huilByODItxjcJPHjKgoDgrV7VtukwXT9kKbscJHWmFV

Base64和Base62算法都很简单,Base62在很多语言中缺少原生支持,我搜集了一下第三方类库:

在线测试:https://base62.io/

Java版本:http://iffiffj.iteye.com/blog/618713

PHP版本:https://github.com/tuupola/base62

JS版本:https://www.npmjs.com/package/base62

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部