精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JS中的二進制操作簡介

開發(fā) 前端
現(xiàn)今世界上幾乎所有的計算機體系結(jié)構(gòu)都是以字節(jié)(byte)為二進制數(shù)據(jù)的基本單位(注:不是說最小單位),所以二進制常常以字節(jié)數(shù)組的形式存在于程序當中。例如在C#里面,就用byte[],標準C里面沒有byte類型,但可以通過typedef把byte定義為unsigned char的別名,效果是一樣的。

JS中的二進制操作簡介

寫這篇博客的起源是小胡子哥的一篇文章《你所不知道的JavaScript數(shù)組你所不知道的JavaScript數(shù)組》。

因為隨著XHR2和現(xiàn)代瀏覽器的普及,在瀏覽器當中處理二進制不再向過去那樣無所適從,隨著Canvas/WebGL等新技術逐漸開始進入大眾視野,也會用到一些字節(jié)數(shù)組或者16位、8位整數(shù)等東西。在node.js剛剛發(fā)布的4.0版本中,Buffer的底層使用了更符合JS標準的Uint8Array來實現(xiàn),瀏覽器和node.js再次向相同的目標靠近了一點點,所以對于JS中處理二進制,我就打算寫這篇文章作一個入門性質(zhì)的流水賬,方便一些對二進制處理不了解的同學快速入門,雖然在前端領域用到的不多,不過也可以作為茶余飯后的休閑談資。

二進制數(shù)據(jù)在JS程序里的表達

現(xiàn)今世界上幾乎所有的計算機體系結(jié)構(gòu)都是以字節(jié)(byte)為二進制數(shù)據(jù)的基本單位(注:不是說最小單位),所以二進制常常以字節(jié)數(shù)組的形式存在于程序當中。例如在C#里面,就用byte[],標準C里面沒有byte類型,但可以通過typedef把byte定義為unsigned char的別名,效果是一樣的。

JS設計之初似乎根本沒想過要處理二進制的東西,加上對類型的極度弱化,對于字節(jié)的概念可以說是非常非常的模糊。如果要表達字節(jié)數(shù)組,那么似乎只能用一個普通數(shù)組來表示。

HTML5體系引入了一大堆新的東西,比如XHR2,是可以上傳或下載二進制內(nèi)容的,與之配套的東西就是JS里的ArrayBuffer和Typed Array了。

ArrayBuffer是一個固定長度的字節(jié)序列,你可以通過new ArrayBuffer(length)來得到一片空間,或者用下文將會介紹的方法從XHR2等途徑獲取。由于內(nèi)部實現(xiàn)與數(shù)組不一樣,ArrayBuffer通常都是連續(xù)內(nèi)存(注意,這只是經(jīng)驗之談,并不是規(guī)范也不是文檔所明確的),因此對于高密度的訪問操作而言它比JS中的Array速度會快很多(但并不要用它來簡單地代替Array)。如果用Chrome的Profile工具查看Heap Snapshot,會發(fā)現(xiàn)ArrayBuffer會被單獨列為一類,也許它的內(nèi)存分配和布局與Array以及其他JS對象有一些差別吧。

ArrayBuffer是不能直接被訪問的,因此需要借助Typed Array。Typed Array是一組具體數(shù)據(jù)類型的Array-Like類型的統(tǒng)稱,包括

  • Int8Array 8位有符號整數(shù),類似于C里面的char
  • Uint8Array 8位無符號整數(shù),類似于C里面的unsigned char
  • Uint8ClampedArray 8位無符號整數(shù),跟Uint8類似,但在溢出處理上不大一樣
  • Int16Array 后面這些類型就不羅嗦了
  • Uint16Array
  • Int32Array
  • Uint32Array
  • Float32Array
  • Float64Array

Typed Array的背后是一個ArrayBuffer,也就是說,事實上的數(shù)據(jù)是存在ArrayBuffer里面的,而Typed Array只是給你提供了一個某種類型的讀寫接口,用MDN的話說,叫做

Multiple views on the same data

舉個栗子,如果我們有一個ArrayBuffer名為buffer(先不考慮怎么構(gòu)造這個測試數(shù)據(jù)),內(nèi)容如下:

  1. 01 02 03 04 05 06 07 08 

也就是說它有8個字節(jié),我們分別用它來構(gòu)造Uint8Array, Uint16Array, Uint32Array,則可以得到

  1. var u8 = new Uint8Array(buffer); // length為8 
  2.  
  3. var u16 = new Uint16Array(buffer); // length為4 
  4.  
  5. var u32 = new Uint32Array(buffer); // length為2  

它們的內(nèi)容分別為

  1. [1, 2, 3, 4, 5, 6, 7, 8] 
  2.  
  3. [513, 1027, 1541, 2055] 
  4.  
  5. [67305985, 134678021]  

這不難理解。

可以看出,如果要手工構(gòu)造上面的測試數(shù)據(jù)ArrayBuffer,用Uint8Array就會很方便(呃事實上這是我個人最常用的一種Typed Array)。

而如果用同樣的ArrayBuffer構(gòu)建帶符號整數(shù)類型,則可能因為整數(shù)溢出而得到不同的結(jié)果,上面的例子并沒有碰到,有興趣的話可以自己試試。因此使用Typed Array也可以用來做有符號數(shù)和無符號數(shù)的轉(zhuǎn)換。

如果你用過canvas的getImageData/putImageData的話,會發(fā)現(xiàn)它給你的就是一個Uint8ClampedArray,這東西訪問起來速度比JS的原生Array快很多,使得對canvas進行高速的像素操作成為可能。

然而最最重要的一個概念還是:Typed Array不直接存放任何數(shù)據(jù),所有對Typed Array進行讀寫的操作,最終都會落實到它背后所持有的ArrayBuffer的身上。ArrayBuffer才是真正的raw bytes,而Typed Array只是一個操作窗口/操作視圖(View)。

獲取二進制數(shù)據(jù)

nodejs那邊先按住不表,這里談談在網(wǎng)頁里如何獲取二進制數(shù)據(jù)?常見的辦法有3種,1是通過XMLHttpRequest 2,2是通過File和Blob一套相關接口。

通過XMLHttpRequest 2

XHR2的接口跟XHR幾乎是一樣的,當制定xhr.responseType = 'arraybuffer'以后,在成功獲取數(shù)據(jù)的回調(diào)里就可以通過xhr.response來得到請求結(jié)果的ArrayBuffer了,然后就可以按照你的意愿來構(gòu)造各種Typed Array進行訪問。

responseType還可以有blob取值,可以用xhr.response獲得Blob對象。

通過File和Blob

在HTML5中提供了對表單的文件控件<input type="file" />更豐富的操作,可以通過inputDOM對象的.files來獲取一個FileList,當然通常瀏覽器都只提供了單選的文件控件,于是這里都只會有一個File對象。另外,通過拖拽、剪貼板等方式也能獲取到File或者Blob。

File繼承了Blob,并提供了name, lastModifiedDate等基礎元數(shù)據(jù),但是依然是一個深度封裝,不能直接獲取到它的二進制。

Blob是Binary large object的縮寫,它與ArrayBuffer的區(qū)別是除了raw bytes以外它還提供了mime type作為元數(shù)據(jù)。但它依然是無法直接被讀寫的。

這時候需要借助FileReader的幫忙。FileReader提供了一組用來將Blob讀取為更為實用的類型的方法

  1. readAsArrayBuffer() 
  2.  
  3. readAsBinaryString() 
  4.  
  5. readAsDataURL() 
  6.  
  7. readAsText()  

例如

  1. var file = get_file_some_how(); 
  2.  
  3. var fr = new FileReader(); 
  4.  
  5. fr.onload = function(e) { 
  6.  
  7. e.target.result; // 讀取的結(jié)果 
  8.  
  9. }; 
  10.  
  11. fr.readAsDataUrl(file); // readAsArrayBuffer  

可以干什么呢?例如圖片上傳之前的本地預覽(甚至基于canvas的編輯)等等都可以實現(xiàn)了。

Blob的其他構(gòu)造方法多而雜,這里就先不到處搬運文檔了。

消費二進制數(shù)據(jù)

何謂消費?最常見的方式也許就是通過XHR2直接把二進制數(shù)據(jù)以文件方式POST到服務端去。

這里我比較推薦使用FormData來構(gòu)造POST數(shù)據(jù)。因為在服務端收的時候會比較容易一些,具體有興趣可以去找找別人的例子。

雖然直接提交ArrayBuffer也是可以的,但是這種時候服務端收到的POST body會是一大團,用起來不方便。如果要使用FormData來提交ArrayBuffer,需要先將其構(gòu)造成Blob。

對Typed Array的構(gòu)造留個心眼

當使用new xxxxxArray(arrayBuffer)這個重載進行構(gòu)造的時候,它會默認基于此ArrayBuffer進行構(gòu)造。但當使用new xxxxArray(another_typed_array)這個重載的時候,則是進行“拷貝構(gòu)造”,這樣兩個Typed Array會指向不同的buffer,需要注意這是否符合預期。

如果需要基于同一個ArrayBuffer來構(gòu)造Typed Array,可以使用Typed Array的buffer, byteLength,byteOffset來獲取它背后的ArrayBuffer。

Tips(坑)

對內(nèi)存對齊留個心眼

當使用ArrayBuffer來構(gòu)造Typed Array的時候,可以指定byteOffset參數(shù),例如

  1. var buffer = get_array_buffer_some_how(); 
  2.  
  3. var i16 = new Int16Array(buffer, 10);  

上面的代碼就能以buffer向后偏移10字節(jié)處為起點來構(gòu)造Int16Array,但是如果將10設置為一個奇數(shù),會發(fā)現(xiàn)如下錯誤:

  1. RangeError: start offset of Int16Array should be a multiple of 2 

這是因為Typed Array對內(nèi)存對齊有要求,它不能在非對齊的位置建立,同理,Uint32Array和Int32Array則要求偏移量是4字節(jié)對齊的。

因此如果你希望在非對齊的位置進行讀寫,則需要借助DataView的幫忙。

對字節(jié)序留個心眼

我們?nèi)粘V兴鶎懙某绦颍瑤缀醵疾恍枰P心字節(jié)序,因此這個問題沒那么嚴重,知道自己的程序會有字節(jié)序問題的人,開發(fā)到這里也肯定會知道問題的存在,但這里還是稍微提一下。

按照MDN的說法,Typed Array只會使用當前平臺的字節(jié)序,例如我們現(xiàn)在用的桌面電腦不論PC還是Mac都是x86/x64的,也就是little-endian了。

使用DataView,不僅可以解決上面說到的內(nèi)存對齊的問題,還可以指定讀寫時的字節(jié)序,具體參數(shù)都在文檔里面了,就不搬運了。

使用DataView配合Typed Array也可以做到一個檢測當前平臺字節(jié)序的技巧:

  1. function isLittleEndian() { 
  2.  
  3. var buf = new ArrayBuffer(2); 
  4.  
  5. var view = new DataView(buf); 
  6.  
  7. view.setInt16(0, 256, true);//顯式以little endian寫入數(shù)據(jù) 
  8.  
  9. // 此時buf里的內(nèi)存布局應該是 00 01 
  10.  
  11.  
  12. var i16 = new Int16Array(buf); 
  13.  
  14. // 如果以little endian讀取,它就是256;以big endian讀取,則是1 
  15.  
  16. return (i16[0] === 256); 
  17.  
  18.  

如果你編寫的程序需要垮體系結(jié)構(gòu)例如x86/ARM/PPC等,則在交換文件和網(wǎng)絡包的時候需要謹慎處理字節(jié)序,當然一個辦法是在這些地方預先規(guī)范統(tǒng)一字節(jié)序以防后患。不過那些都是題外話了。

小結(jié)

使用ArrayBuffer來存儲一段字節(jié),使用Typed Array來構(gòu)建一個具體數(shù)值類型的訪問窗口,使用DataView對非對齊或在乎字節(jié)序的ArrayBuffer進行更精確的操作,使用XHR2, Blob, File, FileReader, FormData等多種方式來獲取或消費ArrayBuffer。

另外羅嗦一句,瀏覽器還提供了一系列所謂的“Binary String”,就是一些看起來像亂碼一樣的字符串,然后又提供了atob/btoa這種方式來對Base64和“Binary String”進行相互轉(zhuǎn)換,甚至FileReader還提供了readAsBinaryString方法(已經(jīng)廢棄了,善哉)。這個Binary String真是誰用誰遭殃,別問我為什么知道…… 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2009-12-16 10:49:42

Ruby操作二進制文件

2022-07-18 09:01:15

SwiftApple二進制目標

2009-02-27 09:37:33

Google二進制代碼

2009-11-02 11:27:42

VB.NET二進制文件

2010-10-13 15:45:23

MySQL二進制日志

2025-01-26 10:21:54

2022-10-31 08:02:42

二進制計算乘法

2018-10-22 14:37:16

二進制數(shù)據(jù)存儲

2022-09-28 08:01:33

JavaScript二進制

2024-03-14 10:31:33

JSbase64url

2011-05-25 14:10:38

浮點數(shù)

2021-11-10 09:15:00

CPU01 二進制Linux

2021-01-14 09:40:54

漏洞macOS屬性表文件

2015-07-21 11:43:14

CentosRPM

2022-07-26 13:00:01

安全符號源代碼

2010-06-09 13:02:29

MySQL啟用二進制日

2009-08-12 18:06:53

C#讀取二進制文件

2020-10-10 14:27:01

kubernetes 二進制部署

2010-04-16 09:42:25

Fedora 13Nvidia二進制驅(qū)動

2022-09-05 08:12:28

Google二進制Protobuf
點贊
收藏

51CTO技術棧公眾號

中文字幕天堂av| 亚洲av综合色区| 亚洲精品国产精品乱码视色| 四虎成人精品永久免费av九九| 91精品久久久久久久久99蜜臂| 日韩一区二区高清视频| 欧美日韩国产综合视频| 蜜桃久久精品一区二区| 欧美—级高清免费播放| 亚洲第一综合网| 成人久久精品| 欧美小视频在线| 欧美少妇在线观看| 九九热视频在线观看| 国产酒店精品激情| 国产精品xxxxx| 久草网在线观看| 日本一区二区在线看| 精品欧美黑人一区二区三区| www.日本一区| jizzjizz中国精品麻豆| 国产女主播一区| 精品国产一区二区三| 国产日韩免费视频| 麻豆精品精品国产自在97香蕉| 欧美日本国产在线| 婷婷综合在线视频| 美日韩中文字幕| 精品久久久久99| 污污视频网站在线| 欧美不卡高清一区二区三区| 亚洲国产视频一区| 99re99热| 97最新国自产拍视频在线完整在线看| 高清不卡在线观看| 亚洲专区国产精品| 在线观看毛片av| 青青草视频一区| 青青a在线精品免费观看| 久久黄色小视频| 中文一区一区三区免费在线观看| 亚洲视频免费一区| 亚洲熟妇一区二区三区| 狼人精品一区二区三区在线 | 综合久久伊人| 欧美午夜一区二区| 国产天堂在线播放| 成人黄色免费短视频| 婷婷成人激情在线网| 免费看毛片的网址| 动漫一区二区| 黄色成人在线播放| 欧美国产日韩激情| gogo高清在线播放免费| 一区二区三区在线视频免费 | a毛片毛片av永久免费| 日韩高清三区| 亚洲男女性事视频| 在线不卡av电影| 国产亚洲欧美日韩在线观看一区二区 | 亚洲图色中文字幕| 精品中文字幕一区二区三区| 欧美精品乱码久久久久久按摩| 久久国产精品国产精品| 日韩福利影视| 欧美一区二区大片| 国产成人av片| 加勒比久久高清| 精品视频在线观看日韩| 老牛影视av老牛影视av| 精品久久久久久久久久久aⅴ| 一区二区三区国产在线观看| 99久久久无码国产精品不卡| 亚欧美无遮挡hd高清在线视频 | 亚洲女人久久久| 99久久夜色精品国产亚洲狼 | 色涩成人影视在线播放| 自拍视频在线网| 亚洲另类春色国产| 欧美不卡在线播放| 成人啊v在线| 69久久夜色精品国产69蝌蚪网| 992kp免费看片| 国产精品视屏| 亚洲欧美国产一本综合首页| 免费一级特黄3大片视频| 久久久久亚洲| 国内久久久精品| 国产无遮挡又黄又爽又色视频| 免费人成在线不卡| 99一区二区| 日韩a在线看| 国产精品电影一区二区| 美女扒开大腿让男人桶| 国产成人精品123区免费视频| 911精品产国品一二三产区| 日韩av无码一区二区三区不卡| 欧美女王vk| 欧美大胆a视频| 无码人妻熟妇av又粗又大| 久久超碰97中文字幕| 国产精品一区视频| 五月婷婷在线观看| 调教+趴+乳夹+国产+精品| 手机免费av片| 日韩三级毛片| 久久99视频免费| 中文有码在线播放| 成人18视频日本| 亚洲一区精彩视频| 一个人www视频在线免费观看| 欧美乱妇23p| 熟女丰满老熟女熟妇| 婷婷综合在线| 国产精品都在这里| 日本成人动漫在线观看| 亚洲欧洲中文日韩久久av乱码| 国产午夜福利100集发布| 大胆国模一区二区三区| 亚洲欧美在线第一页| 国产一级中文字幕| 久久99精品国产.久久久久久| 久久精品日韩| 日本片在线观看| 欧美老年两性高潮| 欧洲av一区二区三区| av不卡免费看| 国产精品视频入口| 亚洲男同gay网站| 欧美日韩国产经典色站一区二区三区 | 最新中文字幕免费| 91美女片黄在线观看91美女| 欧美黑人在线观看| 国产中文欧美日韩在线| 日韩在线免费av| 怡春院在线视频| 久久久久久日产精品| 男人的天堂狠狠干| caoporn成人免费视频在线| 久久影视电视剧免费网站| 在线观看国产小视频| 国产日产亚洲精品系列| 116极品美女午夜一级| 国产精品chinese在线观看| 欧美精品免费看| 国产后入清纯学生妹| 日韩一区欧美一区| 999久久久精品视频| 日韩欧美一区免费| 国产欧美va欧美va香蕉在| 草草影院在线观看| 欧美综合亚洲图片综合区| 久久日免费视频| 久久av中文字幕片| 粉嫩av一区二区三区天美传媒 | 亚洲黄色av网站| 午夜精品三级久久久有码| 91亚洲精品乱码久久久久久蜜桃| 成 年 人 黄 色 大 片大 全| 欧美黄色录像| 国产成人a亚洲精品| 爱久久·www| 欧美精品vⅰdeose4hd| 国产极品国产极品| 成人午夜视频网站| 99爱视频在线| 成人羞羞动漫| 91免费看国产| heyzo高清中文字幕在线| 日韩精品中文字幕有码专区| 波多野结衣网站| 国产精品不卡视频| www.com日本| 亚洲综合日韩| 亚洲欧美电影在线观看| 欧美黄色一级| 91av视频导航| 日韩专区在线| 亚洲第一福利网站| 五月婷婷激情视频| 国产精品久久久久久久久快鸭| 午夜久久久精品| 天天久久综合| 成人自拍视频网站| 欧亚一区二区| 久久黄色av网站| 亚洲产国偷v产偷v自拍涩爱| 久久久激情视频| 99九九99九九九99九他书对| 欧美日韩精品免费观看视频完整| 国产区二精品视| 欧美电影网站| 久久精品视频在线观看| av官网在线观看| 午夜激情综合网| 国产三级黄色片| 日本视频一区二区| 日本免费a视频| 亚洲影院天堂中文av色| 国产欧美韩国高清| 黄色在线看片| www.日韩系列| 黄色美女一级片| 色香蕉久久蜜桃| 一级性生活免费视频| 久久只精品国产| 蜜臀一区二区三区精品免费视频| 黄色精品一区| 三区精品视频观看| 欧美色图五月天| 国产精品香蕉av| av老司机免费在线| 日韩中文理论片| 国产系列在线观看| 亚洲精品一区二区三区蜜桃下载 | 蜜桃在线一区二区| 欧美色涩在线第一页| 国产五月天婷婷| 中文字幕一区二区三中文字幕| 少妇被狂c下部羞羞漫画| 美女免费视频一区二区| 精品少妇在线视频| 欧美色就是色| 玛丽玛丽电影原版免费观看1977| 95精品视频| 日韩美女视频免费看| 91福利国产在线观看菠萝蜜| 中文字幕欧美日韩精品| 蜜桃av噜噜一区二区三区麻豆| 欧美日韩一区二区电影| 麻豆成人免费视频| 姬川优奈aav一区二区| 日本在线一级片| 亚洲视频一区二区免费在线观看 | 国产毛片精品| 91精品啪在线观看麻豆免费| 日韩高清中文字幕一区二区| 青青草成人在线| 国产在线精彩视频| 色综合久久精品亚洲国产| 国产一二三在线观看| 精品视频在线播放色网色视频| 亚洲国产剧情在线观看| 欧美日韩精品免费| 你懂的国产在线| 一本大道久久a久久精二百| 国产精品白浆一区二小说| 国产精品卡一卡二| 韩国av中国字幕| 成人午夜在线免费| 亚洲精品鲁一鲁一区二区三区 | 亚洲免费看av| 石原莉奈在线亚洲二区| 黄色av免费在线播放| 欧美资源在线| 欧美在线观看成人| 雨宫琴音一区二区在线| 1024av视频| 一本色道久久精品| 好吊妞无缓冲视频观看| 久久婷婷久久| 91最新在线观看| 久久久久久久欧美精品| 国语对白做受xxxxx在线中国| 日韩精品一二三区| 欧美日韩在线免费播放| 琪琪一区二区三区| 一级片黄色免费| 国产精品香蕉一区二区三区| 无码国产精品一区二区高潮| 国产麻豆一精品一av一免费| 丝袜熟女一区二区三区 | 欧美日韩不卡一区二区| 97超碰人人草| 欧美一区午夜视频在线观看| 一级黄色片免费看| 日韩欧美一级二级三级久久久| 性色av蜜臀av| 精品国产电影一区二区| 九色在线观看视频| 中文字幕日韩欧美在线视频| 麻豆网站在线观看| 久久亚洲国产精品成人av秋霞| 91美女精品| 国产aaa精品| 四虎国产精品成人免费影视| 99久久精品免费看国产一区二区三区 | 国产高清一级毛片在线不卡| 久久精品视频播放| 爱看av在线| 国产精品黄页免费高清在线观看| 亚洲**毛片| 欧美福利一区二区三区| 99精品美女| 日本中文字幕网址| 精品一区二区在线看| 免费观看黄网站| 93久久精品日日躁夜夜躁欧美| 国产精品视频看看| 亚洲国产成人高清精品| 国产成人a v| 日韩一二三区不卡| 国产女主播在线写真| 欧美成在线视频| av有声小说一区二区三区| 国产日韩欧美综合精品 | 久久av喷吹av高潮av| 国产精品hd| 杨幂毛片午夜性生毛片| 成人精品小蝌蚪| 你懂得视频在线观看| 欧美日韩中文字幕综合视频| 91国内精品视频| 亚洲国产美女精品久久久久∴| 97超碰在线公开在线看免费| 欧美性资源免费| 国产精品色婷婷在线观看| 久久狠狠久久综合桃花| 欧美96在线丨欧| 在线免费观看视频黄| 国产美女精品人人做人人爽| 少妇精品无码一区二区免费视频| 午夜久久电影网| 国产视频在线观看视频| 中文字幕日韩欧美在线视频| 嗯~啊~轻一点视频日本在线观看| 国产精品视频免费观看www| 一个色免费成人影院| 久久亚洲国产成人精品无码区| 蜜桃一区二区三区四区| av天堂一区二区| 亚洲午夜日本在线观看| 96亚洲精品久久久蜜桃| 影音先锋日韩有码| free性m.freesex欧美| 91网免费观看| 婷婷精品进入| 91福利国产成人精品播放| 久久亚洲精品小早川怜子| 可以免费在线观看的av| 精品999久久久| 秋霞在线视频| 国产精品乱码一区二区三区| 中文乱码免费一区二区三区下载| 天天干天天av| 亚洲摸摸操操av| 国产又爽又黄免费软件| 亚洲另类xxxx| 99精品国自产在线| 热舞福利精品大尺度视频| 国内精品久久久久久久97牛牛| 午夜影院福利社| 一区二区高清视频在线观看| 99er热精品视频| 欧美精品激情blacked18| 成人黄色av网址| 国产精品va在线观看无码| 99久久er热在这里只有精品15| 欧美一级高潮片| 91精品麻豆日日躁夜夜躁| 青春草在线免费视频| 91视频免费进入| 91成人影院| av天堂一区二区| 精品成人乱色一区二区| 国产 日韩 欧美 精品| 91超碰中文字幕久久精品| 色愁久久久久久| www黄色av| 中文字幕国产精品一区二区| 中文字幕在线网站| 中文字幕亚洲无线码在线一区| 成人在线视频免费| 亚洲午夜激情| 久久99精品久久久久久国产越南 | 99re热视频这里只精品| 无码人妻久久一区二区三区| 中文字幕久热精品在线视频| gogo大尺度成人免费视频| 妞干网在线观看视频| 91麻豆国产自产在线观看| 亚洲AV无码成人精品区东京热| 日韩在线精品视频| 成人免费直播在线| wwww.国产| 一区二区三区在线视频播放| 欧美熟妇交换久久久久久分类 | 欧美97人人模人人爽人人喊视频| 中国一区二区三区| 国产不卡在线播放| 日韩 欧美 综合| 中文字幕日韩欧美| 黄色免费大全亚洲| 国产性生交xxxxx免费| 亚洲精品伦理在线| 黄色在线视频观看网站| 成人信息集中地欧美| 欧美黄色免费| 一级黄色片网址| 日韩欧美一二区|