国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

node.js學習之base64編碼解碼

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:28:34
文檔

node.js學習之base64編碼解碼

node.js學習之base64編碼解碼:一. Base64編碼由來為什么會有Base64編碼呢?因為有些網(wǎng)絡傳送渠道并不支持所有的字節(jié),例如傳統(tǒng)的郵件只支持可見字符的傳送,像ASCII碼的控制字符就 不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進制流的每個字節(jié)不可能全部是可見字符,所以就
推薦度:
導讀node.js學習之base64編碼解碼:一. Base64編碼由來為什么會有Base64編碼呢?因為有些網(wǎng)絡傳送渠道并不支持所有的字節(jié),例如傳統(tǒng)的郵件只支持可見字符的傳送,像ASCII碼的控制字符就 不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進制流的每個字節(jié)不可能全部是可見字符,所以就
一. Base64編碼由來

為什么會有Base64編碼呢?因為有些網(wǎng)絡傳送渠道并不支持所有的字節(jié),例如傳統(tǒng)的郵件只支持可見字符的傳送,像ASCII碼的控制字符就 不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進制流的每個字節(jié)不可能全部是可見字符,所以就傳送不了。最好的方法就是在不改變傳統(tǒng)協(xié)議的情 況下,做一種擴展方案來支持二進制文件的傳送。把不可打印的字符也能用可打印字符來表示,問題就解決了。Base64編碼應運而生,Base64就是一種 基于64個可打印字符來表示二進制數(shù)據(jù)的表示方法。

二. Base64編碼原理

看一下Base64的索引表,字符選用了"A-Z、a-z、0-9、+、/" 64個可打印字符。數(shù)值代表字符的索引,這個是標準Base64協(xié)議規(guī)定的,不能更改。64個字符用6個bit位就可以全部表示,一個字節(jié)有8個bit 位,剩下兩個bit就浪費掉了,這樣就不得不犧牲一部分空間了。這里需要弄明白的就是一個Base64字符是8個bit,但是有效部分只有右邊的6個 bit,左邊兩個永遠是0。

201611011003251.png

那么怎么用6個有效bit來表示傳統(tǒng)字符的8個bit呢?8和6的最小公倍數(shù) 是24,也就是說3個傳統(tǒng)字節(jié)可以由4個Base64字符來表示,保證有效位數(shù)是一樣的,這樣就多了1/3的字節(jié)數(shù)來彌補Base64只有6個有效bit 的不足。你也可以說用兩個Base64字符也能表示一個傳統(tǒng)字符,但是采用最小公倍數(shù)的方案其實是最減少浪費的。結合下邊的圖比較容易理解。Man是三個 字符,一共24個有效bit,只好用4個Base64字符來湊齊24個有效位。紅框表示的是對應的Base64,6個有效位轉化成相應的索引值再對應 Base64字符表,查出"Man"對應的Base64字符是"TWFU"。說到這里有個原則不知道你發(fā)現(xiàn)了沒有,要轉換成Base64的最小單位就是三個字節(jié),對一個字符串來說每次都是三個字節(jié)三個字節(jié)的轉換,對應的是Base64的四個字節(jié)。這個搞清楚了其實就差不多了。

201611011003251.png

但是轉換到最后你發(fā)現(xiàn)不夠三個字節(jié)了怎么辦呢?愿望終于實現(xiàn)了,我們可以用兩 個Base64來表示一個字符或用三個Base64表示兩個字符,像下圖的A對應的第二個Base64的二進制位只有兩個,把后邊的四個補0就是了。所以 A對應的Base64字符就是QQ。上邊已經(jīng)說過了,原則是Base64字符的最小單位是四個字符一組,那這才兩個字 符,后邊補兩個"="吧。其實不用"="也不耽誤解碼,之所以用"=",可能是考慮到多段編碼后的Base64字符串拼起來也不會引起混淆。由此可見 Base64字符串只可能最后出現(xiàn)一個或兩個"=",中間是不可能出現(xiàn)"="的。下圖中字符"BC"的編碼過程也是一樣的。

三、node.js普通字符串編碼解碼:

var b = new Buffer('JavaScript');
var s = b.toString('base64');
// SmF2YVNjcmlwdA==
 
 
var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString();
// JavaScript

編碼解碼并轉成hex

var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')
var s = b.toString('hex');
// 4a617661536372697074
 
 
var b = new Buffer('4a617661536372697074', 'hex')
var s = b.toString('utf8');
// JavaScript

四、node.js編碼解碼圖片

var fs = require('fs');
 
// function to encode file data to base64 encoded string
function base64_encode(file) {
 // read binary data
 var bitmap = fs.readFileSync(file);
 // convert binary data to base64 encoded string
 return new Buffer(bitmap).toString('base64');
}
 
// function to create file from base64 encoded string
function base64_decode(base64str, file) {
 // create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded
 var bitmap = new Buffer(base64str, 'base64');
 // write buffer to file
 fs.writeFileSync(file, bitmap);
 console.log('******** File created from base64 encoded string ********');
}
 
// convert image to base64 encoded string
var base64str = base64_encode('kitten.jpg');
console.log(base64str);
// convert base64 string back to image
base64_decode(base64str, 'copy.jpg');

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

node.js學習之base64編碼解碼

node.js學習之base64編碼解碼:一. Base64編碼由來為什么會有Base64編碼呢?因為有些網(wǎng)絡傳送渠道并不支持所有的字節(jié),例如傳統(tǒng)的郵件只支持可見字符的傳送,像ASCII碼的控制字符就 不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進制流的每個字節(jié)不可能全部是可見字符,所以就
推薦度:
標簽: 學習 編碼 解碼
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 成人黄色在线 | 殴美aⅴ| 欧美另类网站 | 青青色在线视频 | 国产高清美女一级毛片久久 | 久久久久无码国产精品一区 | 伊人久久91 | 欧美亚洲综合在线 | 色翁荡息又大又硬又粗又爽 | 99久久精品国产一区二区三区 | 国产精品色综合久久 | 国产成人一区二区三区 | 亚洲国产精品综合久久网络 | 国产在线精品一区二区夜色 | 免费a黄色 | 国产高清免费 | 久久精品综合国产二区 | 亚洲日韩图片专区第1页 | 久久永久免费视频 | 久久久久久久国产精品毛片 | 欧美一区二区三 | 欧美日本综合 | 小说区 亚洲 自拍 另类 | 日韩在线网址 | 国内精品久久久久久久久 | 欧美成人一区二区三区在线视频 | 免费看一级毛片 | 亚洲图片在线观看 | 国产精品亚洲专区在线观看 | 亚洲国语在线视频手机在线 | 91精品欧美一区二区三区 | 99视频都是精品热在线播放 | 亚洲精品在线第一页 | 久久久久久国产精品免费 | 久久久精品一区二区三区 | 国产精品成久久久久三级 | 日韩美在线 | 久久久久久91 | 美女视频黄a视频免费全过程在线 | 国产一区二区三区视频在线观看 | 精品久久久久久久中文字幕 |