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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

HTML5 ArrayBufferView之DataView

發布時間:2024/6/21 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 HTML5 ArrayBufferView之DataView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DataView視圖

如果一段數據包括多種類型(比如服務器傳來的HTTP數據),這時除了建立ArrayBuffer對象的復合視圖以外,還可以通過DataView視圖進行操作。

DataView視圖提供更多操作選項,而且支持設定字節序。本來,在設計目的上,ArrayBuffer對象的各種類型化視圖,是用來向網卡、聲卡之類的本機設備傳送數據,所以使用本機的字節序就可以了;而DataView的設計目的,是用來處理網絡設備傳來的數據,所以大端字節序或小端字節序是可以自行設定的。

DataView本身也是構造函數,接受一個ArrayBuffer對象作為參數,生成視圖。

DataView(ArrayBuffer buffer [, 字節起始位置 [, 長度]]);

下面是一個實例。

var buffer = new ArrayBuffer(24);
var dv = new DataView(buffer);

實例2: 使用DataView還可以避免一些異常

//將字符串轉換成 Blob對象
var blob = new Blob(['中文字符串'], {
    type: 'text/plain'
});
//將Blob 對象轉換成 ArrayBuffer
var reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onload = function (e) {
    console.info(reader.result); //ArrayBuffer {}
    //經常會遇到的異常 Uncaught RangeError: byte length of Int16Array should be a multiple of 2
    //var buf = new int16array(reader.result);
    //console.info(buf);

    //將 ArrayBufferView  轉換成Blob
    var buf = new DataView(reader.result);
    console.info(buf); //DataView {}
    reader.readAsText(new Blob([buf]), 'utf-8');
    reader.onload = function () {
        console.info(reader.result); //中文字符串
    };
}

DataView視圖提供以下方法讀取內存:

getInt8:讀取1個字節,返回一個8位整數。
getUint8:讀取1個字節,返回一個無符號的8位整數。
getInt16:讀取2個字節,返回一個16位整數。
getUint16:讀取2個字節,返回一個無符號的16位整數。
getInt32:讀取4個字節,返回一個32位整數。
getUint32:讀取4個字節,返回一個無符號的32位整數。
getFloat32:讀取4個字節,返回一個32位浮點數。
getFloat64:讀取8個字節,返回一個64位浮點數。

這一系列get方法的參數都是一個字節序號,表示從哪個字節開始讀取。

var buffer = new ArrayBuffer(24);
var dv = new DataView(buffer);

// 從第1個字節讀取一個8位無符號整數
var v1 = dv.getUint8(0);
// 從第2個字節讀取一個16位無符號整數
var v2 = dv.getUint16(1); 
// 從第4個字節讀取一個16位無符號整數
var v3 = dv.getUint16(3);

上面代碼讀取了ArrayBuffer對象的前5個字節,其中有一個8位整數和兩個十六位整數。

如果一次讀取兩個或兩個以上字節,就必須明確數據的存儲方式,到底是小端字節序還是大端字節序。默認情況下,DataView的get方法使用大端字節序解讀數據,如果需要使用小端字節序解讀,必須在get方法的第二個參數指定true。

// 小端字節序
var v1 = dv.getUint16(1, true);
// 大端字節序
var v2 = dv.getUint16(3, false);
// 大端字節序
var v3 = dv.getUint16(3);

DataView視圖提供以下方法寫入內存:

setInt8:寫入1個字節的8位整數。
setUint8:寫入1個字節的8位無符號整數。
setInt16:寫入2個字節的16位整數。
setUint16:寫入2個字節的16位無符號整數。
setInt32:寫入4個字節的32位整數。
setUint32:寫入4個字節的32位無符號整數。
setFloat32:寫入4個字節的32位浮點數。
setFloat64:寫入8個字節的64位浮點數。

這一系列set方法,接受兩個參數,第一個參數是字節序號,表示從哪個字節開始寫入,第二個參數為寫入的數據。對于那些寫入兩個或兩個以上字節的方法,需要指定第三個參數,false或者undefined表示使用大端字節序寫入,true表示使用小端字節序寫入。

// 在第1個字節,以大端字節序寫入值為25的32位整數
dv.setInt32(0, 25, false); 
// 在第5個字節,以大端字節序寫入值為25的32位整數
dv.setInt32(4, 25); 
// 在第9個字節,以小端字節序寫入值為2.5的32位浮點數
dv.setFloat32(8, 2.5, true);

如果不確定正在使用的計算機的字節序,可以采用下面的判斷方式。

var littleEndian = (function() {
  var buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true);
  return new Int16Array(buffer)[0] === 256;
})();

如果返回true,就是小端字節序;如果返回false,就是大端字節序。

屬性:

DataView.prototype.buffer

Read onlyTheArrayBufferreferenced by this view. Fixed at construction time and thusread only.

DataView.prototype.byteLength

Read onlyThe length (in bytes) of this view from the start of itsArrayBuffer. Fixed at construction time and thusread only.

DataView.prototype.byteOffset

Read onlyThe offset (in bytes) of this view from the start of itsArrayBuffer. Fixed at construction time and thusread only.

更多類型化數組:http://www.cnblogs.com/tianma3798/p/4294433.html

更多DataView:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView

總結

以上是生活随笔為你收集整理的HTML5 ArrayBufferView之DataView的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 婷婷射丁香 | 波多野结衣欲乱上班族 | sm捆绑调教视频 | 俺去俺来也在线www色官网 | 看av免费毛片手机播放 | 国产无套内射又大又猛又粗又爽 | 日日日插插插 | 亚洲伦理在线观看 | 日干夜操 | 免费av播放 | 亚洲草草网 | 日韩一级完整毛片 | 黑花全肉高h湿play短篇 | 国产一级片精品 | 老色鬼在线 | 二区免费视频 | 91麻豆视频 | 欧美人妻一区二区 | 日韩视频在线视频 | 上原亚衣在线观看 | 免费视频爱爱太爽 | 国产又爽又黄免费视频 | a在线看 | 亚洲精品77777 | 日韩电影二区 | 女人久久 | 欧美aaa级| 小视频成人 | 男人喷出精子视频 | 手机在线小视频 | 国产中文字幕网 | 日韩av在线播放观看 | 伊人日日夜夜 | 欧美 变态 另类 人妖 | 一本一道av无码中文字幕 | 另类三区 | 久久天天综合 | 亚洲一区二区精品在线 | 99草| 国产又粗又爽视频 | 99在线成人精品视频 | 中文亚洲av片不卡在线观看 | 四虎精品久久 | 中国特级毛片 | 国产精品www.| 国产码视频 | 欧美激情精品 | 色在线免费| 亚洲免费精品视频 | 色男人影院 | 中文字幕第四页 | www久久精品| 人人舔人人干 | 欧美日韩精品一区二区三区四区 | 小辣椒福利视频导航 | 国产高清亚洲 | 国产精品久久久久久免费播放 | 一级二级在线观看 | 7777久久亚洲中文字幕 | 韩国妻子的朋友 | 国产一区二区三区精品愉拍 | 成人动漫一区 | 日韩欧美成人免费视频 | 一区二区美女视频 | 97精品视频在线观看 | 高清无码视频直接看 | 狠狠天天 | 特级西西人体444www | 亚洲欧美综合自拍 | www.色播 | 你懂的在线观看网址 | 一区二区三区波多野结衣 | 天天综合永久入口 | 久久国产中文字幕 | 国产二区一区 | 亚洲黄色自拍 | 青青操在线观看 | 播色屋| 男男上床视频 | 欧美久久综合网 | 毛片天天看 | 亚洲一区日本 | 伊人中文字幕在线 | 日韩色网站 | 婷婷影视 | 欧美一级电影在线 | 日韩精品人妻中文字幕有码 | 日韩www视频| 精品伦精品一区二区三区视频 | 蜜臀av在线免费观看 | 99热在线观看免费精品 | 香蕉久久久 | 极品人妻一区二区三区 | 51ⅴ精品国产91久久久久久 | 男生裸体视频网站 | 日本极品喷水 | 97在线免费视频 | 国产精品一区在线观看你懂的 | 国产专区一区二区 |