BASE64学习
来源:互联网 发布:tf卡数据恢复软件 编辑:程序博客网 时间:2024/06/12 00:33
概念:Base64是一种用64个字符来表示任意二进制数据的方法。Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
用途:用记事本打开exe
、jpg
、pdf
这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。(转)
原理(转):
Base64的原理很简单,首先,准备一个包含64个字符的数组:
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然后,对二进制数据进行处理,每3个字节一组,一共是3x8=24
bit,划为4组,每组正好6个bit:
这样我们得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。
所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。
如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办?Base64用\x00
字节在末尾补足后,再在编码的末尾加上1个或2个=
号,表示补了多少字节,解码的时候,会自动去掉。
举例:
例:将对ABC进行BASE64编码:
1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);
2、再取二进制值A(01000001)B(01000010)C(01000011);
3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100
)(00001001)(00000011),其中蓝色部分为真实数据;
5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);
6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是
数据在字符表中的索引。
注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。
- BASE64学习
- base64学习
- C++学习之Base64
- Base64 编码学习
- Base64 编码 学习
- Base64学习备忘录
- [实训]Base64学习
- Base64编码学习
- base64学习笔记
- python学习——base64
- urlencode/base64/sha1/md5学习
- base64
- BASE64
- Base64
- BASE64
- Base64
- Base64
- base64
- Swift 中的错误处理
- Linux 系统应用编程——网络编程(常用命令解析)
- 【学习摘记】马士兵bbs改良版_课时33_删除帖子_2——通过传递url实现删除后跳转回来时的“重定向”
- @font-face 未能完成 OpenType 嵌入权限检查。权限必须是可安装的。
- 第三周项目二
- BASE64学习
- 学习FPGA的网站推荐
- 如何在css中设置半透明边框
- Android 面试题 关于数组排序问题
- git使用异常——git push --tags
- Maximum Binary Tree
- windows32位安装Tensorflow
- RMI
- linux下移植AM335的sgx驱动