首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中将浮点值转换为uint8数组

在javascript中将浮点值转换为uint8数组
EN

Stack Overflow用户
提问于 2017-09-13 20:00:12
回答 1查看 4.6K关注 0票数 1

我有一个包含来自音频文件的值的Float32Array。我想将其另存为.wav文件,因此需要将这些值转换为Uint8array。

要从uint8转换为float,我首先转换为int16数组,然后转换为Float32Array (Convert int16 array to float),如何从另一个方向进行转换?

EN

回答 1

Stack Overflow用户

发布于 2017-09-13 20:22:38

代码语言:javascript
复制
var data = new Float32Array([0.1, 0.2, 0.3]);

var buffer = new ArrayBuffer(data.byteLength);
var floatView = new Float32Array(buffer).set(data);
var byteView = new Uint8Array(buffer);

此函数可以将任何TypedArray转换为任何其他类型的TypedArray:

代码语言:javascript
复制
function convertTypedArray(src, type) {
    var buffer = new ArrayBuffer(src.byteLength);
    var baseView = new src.constructor(buffer).set(src);
    return new type(buffer);
}

示例:

代码语言:javascript
复制
convertTypedArray(new Float32Array([0.5, 0.3, -0.1]), Uint8Array);

编辑

正如Ian在评论部分指出的那样,您可以使用TypedArray.buffer访问ArrayBuffer,因此您可以简单地执行以下操作:

代码语言:javascript
复制
var byteArray = new Uint8Array(floatArray.buffer);

请注意,这样做,byteArrayfloatArray将共享相同的缓冲区,因此修改byteArray将修改floatArray,反之亦然。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46196990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档