Base64编码要求把3个8位字节(3*8=24)
转化为4个6位的字节(4*6=24)
,之后在6位的前面补两个0
,形成8位一个字节的形式。
例如字符串“张3” :
11010101 11000101 00110011
转换后:
00110101 00011100 00010100 00110011
用十进制表示即为:53 34 20 51
这个并不是最终的结果,还需要根据Base64的编码表查询出转换后
的值。
下面就是BASE64编码表:
Table 1: The Base64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v (pad) =
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y
以上一共是64个编码,这也是Base64名称的由来,编码的编号对应的是得出的新字节的十进制值
。
因此,上例中字符串“张3”经过编码后就成了字符串“1iUz”了。
当代码量不是3的整数倍时
,代码量/3的余数自然就是2或者1。
转换的时候,结果不够6位的用0来补上相应的位置,之后再在6位的前面补两个0。转换完空出的结果就用就用“=”来补位。譬如结果若最后余下的为2个字节的“张”:
字符串“张”
11010101 HEX:D5 11000101 HEX:C5
00110101 00011100 00010100
十进制53 十进制34 十进制20 pad
字符’1’ 字符’i’ 字符’U’ 字符’=’
这样,最后的2个字节被整理成了“1iU=”。
同理,若原代码只剩下一个字节,那么将会添加两个“=”
。
只有这两种情况,所以,Base64的编码最多会在编码结尾有两个“=”
完~
原文:
http://blog.csdn.net/SCHOLAR_II/archive/2009/02/11/3877606.aspx
分享到:
相关推荐
### BASE64编码规则及其应用 #### 一、编码规则详解 BASE64编码是一种将任意二进制数据转换为可打印的ASCII字符序列的方法,主要用于处理非文本数据在网络传输中可能遇到的问题,如电子邮件系统中对二进制附件的...
Base64编码是一种在网络上传输和存储二进制数据时常用的数据编码方式,它将任意的二进制数据转换成可打印的ASCII字符序列。这种编码方式最初是为了解决邮件系统不能传输二进制数据的问题,现在广泛应用于各种场景,...
BASE64编码规则 及在java C# VB 中的代码实现
2. 分割二进制数据:按照Base64编码规则,将图片数据分为多个6位组。 3. 转换为ASCII字符:每个6位组转换为一个对应的Base64字符。 4. 添加填充:如果最后一组不足6位,需要补零并添加相应的填充字符'='。 5. 结果...
2. 分组:根据Base64编码规则,将编码字符串分为4个字符一组。 3. 解码:将每个字符转换回6位的二进制数。 4. 拼接:将4个6位二进制数连接成一个24位的二进制数据块,如果原始数据有填充,这里会得到少于3字节的结果...
由于不依赖Canvas,它可能将这个矩阵转换为Base64字符串,这个过程可能涉及到位运算和Base64编码规则的实现。 总的来说,“weapp-qrcode-base64”插件提供了一种高效且便捷的在微信小程序中生成二维码的解决方案,...
此外,虽然Base64编码使得数据变得不可读,但它并不提供安全性,因为编码规则是公开的,任何人都可以解码。因此,如果需要保密性,应配合其他加密手段使用。 总的来说,这个"base64编码解码离线工具"为用户提供了一...
在文件转换为Base64编码的过程中,首先会读取文件的二进制内容,然后按照Base64的规则进行转换。这个过程包括分组、编码和填充三个步骤: 1. **分组**:每个8位字节的二进制数据被分为3个一组,如果文件长度不是3的...
VB6.0同样没有内置的Base64解码函数,但我们可以编写一个函数,根据Base64编码规则将字符串转换回字节数组。解码后的字节流可以直接写入到磁盘上的新JPG文件中。 在实际应用中,这样的转换功能可能会被用于网络上传...
在跨语言(如Java和C#)进行对比时,只要遵循相同的编码规则,结果也应相同。 在实际应用中,BASE64编码常用于在网络上传输二进制数据,因为它可以确保数据在传输过程中不受字符集或编码格式的影响。同时,由于其...
base64编码规则的java实现.Provides encoding of raw bytes to base64-encoded characters, and decoding of base64 characters to raw bytes.
1. **预处理数据**:根据Base64的规则,每3个字节转换为4个Base64字符。如果原始数据不是3的倍数,需要在末尾添加0来补足到3的倍数。 2. **编码过程**:遍历每个3字节的数据块,将其转换为64进制。可以使用一个查找...
这个过程涉及到将字节数据按照每3个字节一组进行编码,因为BASE64编码规则是基于8位字节的,每3个字节(24位)可以编码成4个6位的BASE64字符。如果输入字节数组长度不是3的倍数,那么最后会用零填充并编码额外的位。...
- 检查输入字符串的格式,确保其符合Base64编码规则,如检查字符集、长度等。 - 遍历字符串,每次处理4个字符,将其转化为6位的十六进制值。 - 将6位值组合成原始的3字节数据,注意处理末尾可能的填充字符"="。 ...
1. 手动实现:编写一个函数,遍历输入的字节流,按照Base64规则进行转换。每个6位数据对应一个Base64字符,不足6位的部分用0补足。对于最后可能产生的不足3字节的数据,根据实际字节数进行编码。 2. 使用标准库:...
- 这通常涉及读取二进制文件,将其内容分割成字节,然后根据Base64编码规则将这些字节转换为字符序列。 - 最后,可能会在编码后的字符串末尾加上"\n",这是某些Base64规范的要求,但不是所有情况都需要。 2. **...
在C#中,还可以使用更底层的System.Text.Encoding类进行更复杂的编码操作,或者自定义Base64编码规则。 总结来说,这个"Base64转码小工具"是一个使用C#语言编写的实用程序,它提供了Base64编码和解码功能,特别地,...
将十六进制转换为BASE64,首先需要将十六进制字符串转换为二进制,然后再按照BASE64的规则进行编码。这个过程中,需要注意的是,十六进制字符串的长度可能不是3的倍数,因此可能需要在前面或后面添加0,使其长度符合...
在使用这些VI时,注意理解它们的输入和输出参数,以及任何可能的限制,例如字符串长度、编码规则等。此外,确保正确连接数据线,以避免数据丢失或错误。 **实际应用** Base64和Base32Hex编码在LabVIEW中有很多应用...
- 检查输入字符串的格式,确保其符合BASE64编码规则。 - 解码每个字符到6位的值,跳过填充的等于号。 - 将6位的值组合成3个字节的数据,去掉填充的0。 - 分配内存并返回解码后的二进制数据。 在实际应用中,...