Int16ArrayToArrayBuffer()转换函数,arrayBufferToBase64()
Int16Array Convert To ArrayBuffer 二进制类型转换示例
function int16ArrayToArrayBuffer(int16Array) { return int16Array.buffer; } // 使用示例 // var int16Array = new Int16Array([1, 2, 3, 4, 5]); // var arrayBuffer = int16ArrayToArrayBuffer(int16Array);
其实 Int8Array/Int32Array/Float32Array 也可以使用这个工具函数实现转换。
除了 Int16Array 使用上面代码实现转换 ArrayBuffer,下面的类型,也都支持这样的方式转换 buffer:
Int8Array
Uint8Array
Uint8ClampedArray
Int16Array
Uint16Array
Int32Array
Uint32Array
Float16Array
Float32Array
Float64Array
BigInt64Array
BigUint64Array
平时没怎么用过这些类型,有点懵,不熟悉。经过查资料,发现是这么的简单。
Int16Array 转换 ArrayBuffer 的其他方法
function int16ArrayToArrayBuffer(int16Array) { var buffer = new ArrayBuffer(int16Array.length * 2); var view = new DataView(buffer); for (var i = 0; i < int16Array.length; i++) { view.setInt16(i * 2, int16Array[i], true); // 第三个参数true表示使用小端字节序 } return buffer; }
ArrayBuffer To Base64 二进制类型转换Base64字符串 demo
function arrayBufferToBase64(buffer) { // return btoa(String.fromCharCode(...new Uint8Array(buffer))); // ES6 var array = new Uint8Array(buffer) var string = String.fromCharCode.apply(String, array) return window.btoa(string) }
一般在处理web中的二进制文件,才会用到这些转换函数工具。
比如,语音转换文字的时候,调用科大讯飞的 web socket 接口需要这样做。阿里云的语音识别,倒是不用 base64 ,我的感觉是:讯飞的接口还是没有阿里云的设计的优雅。讯飞经常出现api接口输入/输出都是base64,真是不忍直视,缺点:传输量变大、设计丑陋。
一般的 web 开发是用不到这些代码了。
如果你搜到了这个内容,感觉你就不是一般人了。你这是在搞什么研发啊……