php64转码,Base64的编码转换方式
下面,詳細介紹Base64的編碼轉換方式。
所謂Base64,就是說選出64個字符----小寫字母a-z、大寫字母A-Z、數字0-9、符號"+"、"/"(再加上作為墊字的"=",實際上是65個字符)----作為一個基本字符集。然后,其他所有符號都轉換成這個字符集中的字符。
具體來說,轉換方式可以分為四步。
第一步,將每三個字節作為一組,一共是24個二進制位。
第二步,將這24個二進制位分為四組,每個組有6個二進制位。
第三步,在每組前面加兩個00,擴展成32個二進制位,即四個字節。
第四步,根據下表,得到擴展后的每個字節的對應符號,這就是Base64的編碼值。
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
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y
因為,Base64將三個字節轉化成四個字節,因此Base64編碼后的文本,會比原文本大出三分之一左右。
1.
舉一個具體的實例,演示英語單詞Man如何轉成Base64編碼。
Text content
M
a
n
ASCII
77
97
110
Bit pattern
0
1
0
0
1
1
0
1
0
1
1
0
0
0
0
1
0
1
1
0
1
1
1
0
Index
19
22
5
46
Base64-Encoded
T
W
F
u
第一步,"M"、"a"、"n"的ASCII值分別是77、97、110,對應的二進制值是01001101、01100001、01101110,將它們連成一個24位的二進制字符串010011010110000101101110。
第二步,將這個24位的二進制字符串分成4組,每組6個二進制位:010011、010110、000101、101110。
第三步,在每組前面加兩個00,擴展成32個二進制位,即四個字節:00010011、00010110、00000101、00101110。它們的十進制值分別是19、22、5、46。
第四步,根據上表,得到每個值對應Base64編碼,即T、W、F、u。
因此,Man的Base64編碼就是TWFu。
2.
如果字節數不足三,則這樣處理:
a)二個字節的情況:將這二個字節的一共16個二進制位,按照上面的規則,轉成三組,最后一組除了前面加兩個0以外,后面也要加兩個0。這樣得到一個三位的Base64編碼,再在末尾補上一個"="號。
比如,"Ma"這個字符串是兩個字節,可以轉化成三組00010011、00010110、00010000以后,對應Base64值分別為T、W、E,再補上一個"="號,因此"Ma"的Base64編碼就是TWE=。
b)一個字節的情況:將這一個字節的8個二進制位,按照上面的規則轉成二組,最后一組除了前面加二個0以外,后面再加4個0。這樣得到一個二位的Base64編碼,再在末尾補上兩個"="號。
比如,"M"這個字母是一個字節,可以轉化為二組00010011、00010000,對應的Base64值分別為T、Q,再補上二個"="號,因此"M"的Base64編碼就是TQ==。
3.
再舉一個中文的例子,漢字"嚴"如何轉化成Base64編碼?
這里需要注意,漢字本身可以有多種編碼,比如gb2312、utf-8、gbk等等,每一種編碼的Base64對應值都不一樣。下面的例子以utf-8為例。
首先,"嚴"的utf-8編碼為E4B8A5,寫成二進制就是三字節的"11100100 10111000 10100101"。將這個24位的二進制字符串,按照第3節中的規則,轉換成四組一共32位的二進制值"00111001 00001011 00100010 00100101",相應的十進制數為57、11、34、37,它們對應的Base64值就為5、L、i、l。
所以,漢字"嚴"(utf-8編碼)的Base64值就是5Lil。
4.
在PHP語言中,有一對專門的函數用于Base64轉換:base64_encode()用于編碼、base64_decode()用于解碼。
這對函數的特點是,它們不管輸入文本的編碼是什么,都會按照規則進行Base64編碼。因此,如果你想得到utf-8編碼下的Base64對應值,你就必須自己保證,輸入的文本是utf-8編碼的。
詳細介紹Base64的編碼轉換方式
下面,詳細介紹Base64的編碼轉換方式. 所謂Base64,就是說選出64個字符----小寫字母a-z.大寫字母A-Z.數字0-9.符號"+"."/"(再加上 ...
Java base64 圖片編碼轉換
package com.test; import org.junit.Test; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encode ...
中文字符串的編碼轉換(c實現)
中文字符串在c/c++中表示為字節序列,在分詞的時候需要根據不同的編碼方式進行分詞,一般分詞器需要轉換成統一的編碼方式再進行轉換,有些分詞器如ICTCLAS在分詞的時候可以不顯示定義編碼方式,可以檢測 ...
完整的java字符串編碼轉換代碼
package book.String; import java.io.UnsupportedEncodingException; /** *//** * 轉換字符串的編碼 * @author joe ...
JAVA字符串編碼轉換常用類
無論是對程序的本地化還是國際化,都會涉及到字符編碼的轉換的問題.尤其在web應用中常常需要處理中文字符,這時就需要進行字符串的編碼轉換,將字符串編碼轉換為GBK或者GB2312.一.關鍵技術點:??? ...
Base64圖片編碼原理,base64圖片工具介紹,圖片在線轉換Base64
Base64圖片編碼原理,base64圖片工具介紹,圖片在線轉換Base64 DataURI?允許在HTML文檔中嵌入小文件,可以使用?img?標簽或?CSS?嵌入轉換后的?Base64?編碼,減少? ...
java 自定義實現base64編碼轉換
1.base64編碼轉換 所謂base64編碼,即按照規則把字符轉化為"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456 ...
為什么有的代碼要用 base64 進行編碼
一.1.傳輸信道只支持ASCII字符,不方便傳輸二進制流的場合. 2.含有非ASCII字符,容易出現編碼問題的場合. 3.簡易的掩人耳目.至少非開發人一眼看不出來是啥. 二.Base64主要用于將不可 ...
我的Java開發學習之旅------&;gt;Base64的編碼思想以及Java實現
Base64是一種用64個字符來表示隨意二進制數據的方法. 用記事本打開exe.jpg.pdf這些文件時,我們都會看到一大堆亂碼,由于二進制文件包括非常多無法顯示和打印的字符.所以,假設要讓記事本這種 ...
隨機推薦
CSS3 筆記一(Rounded Corners/Border Images/Backgrounds)
CSS3 Rounded Corners The border-radius property is a shorthand property for setting the four border- ...
SVG 是什么?
SVG 意為可縮放矢量圖形(Scalable?Vectors Graphics). ? SVG 圖形在放大或者改變尺寸的情況下,其圖形的質量不會有所損失. ? SVG 使用 XML 格式定義圖形. ? ...
JAVA 創建類,使用類
一.創建類: Test.java //定義類 public class Test{ //屬性 String name; String gender; int age; //方法,無參無返回 publi ...
win下Maven安裝和基本設置
注:本文介紹 Windows 平臺上 Maven 的安裝.Maven 3 需要運行在 JDK1.4 以上的版本上. 非原創:原創地址 http://www.ibm.com/developerworks ...
Install PhoneGap
To Install, ensure that you have NodeJS installed, then open your commandline and run the following: ...
FreeMarker-Built-ins for numbers
http://freemarker.org/docs/ref_builtins_number.html#topic.extendedJavaDecimalFormat Page Contents ab ...
js格式化時間為JSON格式 ajax提交 后臺處理
var effectRow = new Object();if ($('#grd_infos').datagrid('getChanges').length) {??? var update = $( ...
8位基本定時器(TIM4)
簡介:該定時器由一個帶可編程預分頻器的8位自動重載的向上計數器所組成,它可以用來作為時基發生器,具有溢出中斷功能. 主要功能: (1)8位向上計數的自動重載計數器: (2)3位可編程的預分配器(可在運 ...
Linux學習(十三)du、df、fdisk磁盤分區
一.du du命令是查看文件或者目錄大小的命令. 一般使用du -sh 查看,不用-sh參數意義也不大,應為不用這個參數,它會把目錄下的所有文件大小遞歸的顯示出來,就像這樣: 如果用-sh參數: [r ...
windows憑據管理
解決windows憑據無法保存的問題1: 運行-gpedit.msc(組策略)-計算機配置-管理模板-系統-憑據分配 雙擊右側”允許分配保存的憑據用于僅NTLM服務器身份驗證“ 在彈出的窗口中選中“已 ...
總結
以上是生活随笔為你收集整理的php64转码,Base64的编码转换方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 减轻剪辑工作必备——Python实现让视
- 下一篇: 中学计算机课程课时,高中信息技术教案wo