程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Base64編碼解碼道理及C#編程實例

Base64編碼解碼道理及C#編程實例

編輯:C#入門知識

Base64編碼解碼道理及C#編程實例。本站提示廣大學習愛好者:(Base64編碼解碼道理及C#編程實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Base64編碼解碼道理及C#編程實例正文


一. Base64編碼由來

為何會有Base64編碼呢?由於有些收集傳送渠道其實不支撐一切的字節,例如傳統的郵件只支撐可見字符的傳送,像ASCII碼的掌握字符就不克不及經由過程郵件傳送。如許用處就遭到了很年夜的限制,好比圖片二進制流的每一個字節弗成能全體是可見字符,所以就傳送不了。最好的辦法就是在不轉變傳統協定的情形下,做一種擴大計劃來支撐二進制文件的傳送。把弗成打印的字符也能用可打印字符來表現,成績就處理了。Base64編碼應運而生,Base64就是一種基於64個可打印字符來表現二進制數據的表現辦法。

二. Base64編碼道理

看一下Base64的索引表,字符選用了"A-Z、a-z、0-9、+、/" 64個可打印字符。數值代表字符的索引,這個是尺度Base64協定劃定的,不克不及更改。64個字符用6個bit位便可以全體表現,一個字節有8個bit位,剩下兩個bit就糟蹋失落了,如許就不能不就義一部門空間了。這裡須要弄明確的就是一個Base64字符是8個bit,然則有用部門只要左邊的6個bit,右邊兩個永久是0。

  那末怎樣用6個有用bit來表現傳統字符的8個bit呢?8和6的最小公倍數是24,也就是說3個傳統字節可以由4個Base64字符來表現,包管有用位數是一樣的,如許就多了1/3的字節數來填補Base64只要6個有用bit的缺乏。你也能夠說用兩個Base64字符也能表現一個傳統字符,然則采取最小公倍數的計劃實際上是最削減糟蹋的。聯合下邊的圖比擬輕易懂得。Man是三個字符,一共24個有用bit,只好用4個Base64字符來湊齊24個有用位。紅框表現的是對應的Base64,6個有用位轉化成響應的索引值再對應Base64字符表,查出"Man"對應的Base64字符是"TWFU"。說到這裡有個准繩不曉得你發明了沒有,要轉換成Base64的最小單元就是三個字節,對一個字符串來講每次都是三個字節三個字節的轉換,對應的是Base64的四個字節。這個弄清晰了其實就差不多了。

  然則轉換到最初你發明不敷三個字節了怎樣辦呢?欲望終究完成了,我們可以用兩個Base64來表現一個字符或用三個Base64表現兩個字符,像下圖的A對應的第二個Base64的二進制位只要兩個,把後邊的四個補0就是了。所以A對應的Base64字符就是QQ。上邊曾經說過了,准繩是Base64字符的最小單元是四個字符一組,那這才兩個字符,後邊補兩個"="吧。其實不消"="也不延誤解碼,之所以用"=",能夠是斟酌到多段編碼後的Base64字符串拼起來也不會惹起混雜。因而可知Base64字符串只能夠最初湧現一個或兩個"=",中央是弗成能湧現"="的。下圖中字符"BC"的編碼進程也是一樣的。

三.編程完成(C#)

編碼:

byte[] bytes=Encoding.Default.GetBytes("要轉換的字符串");
Convert.ToBase64String(bytes);

解碼:

byte[] outputb = Convert.FromBase64String("ztKwrsTj");
string orgStr= Encoding.Default.GetString(outputb);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved