日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php64转码,Base64的编码转换方式

發布時間:2023/12/20 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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開發學習之旅------>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的编码转换方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。