大家都知道base64编码可以把输入的字符串或数据编码成只含有{'A'-'Z', 'a'-'z', '0'-'9', '+', '/'}这64个可打印字符的串,故称为“Base64”。现在我想编码成只含有{ 'A'-'Z', 'a'-'z', '0'-'9'}这62个可打印字符的串,姑且称为“Base62”吧,不知该如何实现?请大家不吝赐教!
解决方案 »
- 怎么获取CSplitterWnd分割的窗口的客户区RECT??
- vc6根本没出中文版,可是为何vs6sp6官方有中文版的呀?
- 怎么在分割的一个窗口上再分割窗口呢?
- TVHT_ONITEM & uFlags 是什么意思?
- 在OnTimer中keybd_event(功能键)为什么无效
- 在一表中取出了一条记录,然后要把这条记录修改或删除该怎么做啊??
- 请教ODBC ,DAO ,OLE DB的区别
- 如何判断一个socket连接已经中断?
- ADO连接oracle数据库的时候显示”不支持此接口“?
- 进程结束操作系统完成了什么工作?
- 请教一个关于多文档试图显示的问题!急死我了亚!请大家帮忙!在线等!
- ★★升星,当上斑竹,双喜,再散分!!!★★
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再映射到{'A'-'Z', 'a'-'z', '0'-'9', '+', '/'}字符上,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3如果m个base62的BYTE能表示n个正常的byte的话,必然有 256^n=62^m,左面的约数只有2,所以右面也必须只有2,所以右面的底数只能是32、16、8、4、2而不能是62(64也不行,超过了62)。所以底数比较适合取32,既256^5=32^8,也就是5个正常字节用8个base62字节标识(确切地说是base32),这样的编码实际是base32,不过为了使用上全部的62个字符,可以在向字符坐映射的时候作些手脚,比如奇数字节映射到前32个字符上,偶数字节映射到后32个字节上,实际是base32的变种
顶
up
在顶
up
接着顶
我不大清楚因为一共只有62个字符,而不是32+32=64个
“前后32个”的意思是不是指的只取前32个或者只取后32个?再者,这种变形的结果比原字符长度增加了3/5,觉得冗余太大
有没有其他的方法,在base64的3*8=4*6基础上实现base62,映射的时候能否有办法替换掉特殊字符"+","\"和"="呢??