将无符号字节值转换为从-1浮点到1

时间:2019-03-13 19:52:47

标签: javascript floating-point byte

我不确定这是编程问题还是数学问题,但是由于它是在我编写的javascript程序的上下文中,因此我将在此处发布。

我有一个表示PCM音频的0-255(UInt8Array)字节值数组,我需要将其转换为从-1到1的浮点数组。这是因为Javascript Audio API缓冲区是Float32Array个。但是问题可以概括为:如何将0-255的值转换为-1到1的值?

我当前使用的解决方案有效,但看起来很模糊: var f = b / 127.5 - 1;

1 个答案:

答案 0 :(得分:1)

您可以将其抽象为:

 const mapRange = (fromStart, fromEnd) => (toStart, toEnd) => value =>
   value / (fromEnd - fromStart) * (toEnd - toStart) - fromStart + toStart;

const encodeAudio = mapRange(0, 255)/*to*/(-1, 1);

 console.log(encodeAudio(10));