zoukankan      html  css  js  c++  java
  • TypeArray、ArrayBuffer、Blob的相互转换

    websocket 可以指定接受数据为 ArrayBuffer

    /* websocket的情况下二进制流的获取 */
    var svip = 'ws://127.0.0.1:8080';
    var ws = new WebSocket(svip);
    ws.binaryType = 'arraybuffer'
    ws.onmessage = function (e) {
        var message = e.data;
    }

    Blob 转 ArrayBuffer

    const blob = new Blob();
    blob.arrayBuffer().then((ab) => console.log(ab))

    // 或者通过FileReader
    const fr = new FileReader(); fr.onload = function(){ const arrayBuffer = this.result; } fr.readAsArrayBuffer(blob);

    ArrayBuffer 转 Blob

    const ab = new ArrayBuffer(32);
    const blob = new Blob([ab]); // 注意必须包裹[]

    ArrayBuffer 转 TypeArray

    const ab = new ArrayBuffer(10);
    const u8 = new Uint8Array(ab);
    const u16 = new Uint16Array(ab);
    const u32 = new Uint32Array(ab);
    const i8 = new Int8Array(ab);
    const i16 = new Int16Array(ab);
    const i32 = new Int32Array(ab);
    const f32 = new Float32Array(ab);
    const i32 = new Float32Array(ab);

    TypeArray 转 ArrayBuffer

    // Uint8Array 举例,其他一致
    const u8 = new Uint8Array();
    const ab = u8.buffer;

    Array 转 ArrayBuffer

    const arr = [1, 2, 3, 4, 5];
    // 通过 TypeArray 来转换
    var u8 = new Uint8Array(arr); var ab = u8.buffer;

    // 或者通过 DataView 来设置,通过遍历数组来填充
    const buffer = new ArrayBuffer(16); const view1 = new DataView(buffer);

    arr.forEach((num, i) =>
    view1.setInt8(i, num));
    // 或者
    const iter = arr.entries()
    for(let [key, value] of iter) {
      view1.setInt8(key, value)
    }

    TypeArray、ArrayBuffer、Blob 转数组

    const arr = Array.from(/* TypeArray | ArrayBuffer | Blob */)

    参考:http://shihuacivis.github.io/2015/12/29/20151229_arrayBuffer

    TypeArray

  • 相关阅读:
    JS相关
    简单的打字效果
    android文件保存
    android 各种布局技术
    Android中的显示单位
    第一个android项目目录结构说明
    安装运行第一个android应用
    android手机模拟器屏幕分辨率说明
    系统常用VC++运行时下载地址
    VC++共享文件夹
  • 原文地址:https://www.cnblogs.com/YMaster/p/13892269.html
Copyright © 2011-2022 走看看