使用 DataView.prototype.getFloat32()转换单精度浮点数, 二进制消息(blob)转基本数据

58 阅读1分钟
// 假设从后端接受了一个blob数据。 blob

// 创建一个 `FileReader` 实例:使用 `new FileReader()` 创建一个新的 `FileReader` 对象。
const reader = new FileReader();
reader.onload = (blobData) => {

    // 拿到 ArrayBuffer 数据
    const buffer = blobData.target.result;
    // 使用 new DataView 读取buffer
    let dataView = new DataView(buffer);
    // byteLength 获取buffer长度
    // 单精度浮点数 32位, 占用4个字节 i+4
    for (let i = 0; i < dataView.byteLength; i+=4) {
        // 从起始位置 i 偏移 4 个字节处获取一个 32-bit 浮点数 (单精度浮点数,4 个字节)
        let floatNumber = dataView.getFloat32(i, true);
        // 使用 arr 存储
        arr.push(floatNumber);
     }
};
reader.readAsArrayBuffer(blob);